Question

Je suis en utilisant le code suivant pour effectuer un sélecteur après un retard avec plusieurs paramètres passé:

http://nifty-box.com/blog /2006/12/nsinvocation-cleans-code.html

Il fonctionne très bien, mais je dois étendre à soutenir l'équivalent de:

[NSObject cancelPreviousPerformRequestsWithTarget: auto]

(cible dans ce cas, ne serait pas soi-même, mais serait une instance de _UFLatePerformer je crois)

Est-il possible de le faire, si la désaffectation de mon point de vue peut tuer toutes les autres demandes de performance retardées?

Était-ce utile?

La solution

Sur le Mac, vous seriez en mesure d'utiliser objc_setAssociatedObject, mais qui n'existe pas sur l'iPhone.

Donc, fondamentalement, vous avez besoin d'une sorte de gestionnaire singleton qui détient sur ces références pour vous que vous passez dans un NSObject et il fait ce que vous voulez.

Quand je faisais quelque chose de semblable, j'ai écrit une classe singleton qui a eu des demandes pour effectuer une action, et a commencé une minuterie qui a déclenché lorsque l'action devait être fait - à ce moment-là ma classe de gestionnaire a décidé si la demande en question était toujours valable, et le cas échéant l'action a tiré. Je ne pouvais donc annuler une minuterie efficace, et pourrait en outre dire au gestionnaire de réinitialiser le compteur qui n'a pas vraiment, il vient de faire une nouvelle minuterie, mais lorsque le oldtimer a tiré l'action, il a été invité à effectuer était invalide.

Donc, fondamentalement, la minuterie a été appeler le singleton en arrière avec juste un ID de la demande, ce qui a conduit à une entrée de dictionnaire contenant les détails de l'appel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top