Domanda

Sto usando il seguente codice per eseguire un selettore, dopo un ritardo con più superato i parametri:

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

Funziona molto bene, ma ho bisogno di estendere questo per sostenere l'equivalente di:

[NSObject cancelPreviousPerformRequestsWithTarget: self]

(target in questo caso non sarebbe di sé, ma sarebbe un esempio di _UFLatePerformer credo)

Esiste un modo per fare questo, quindi deallocazione del mio punto di vista in grado di uccidere le richieste di prestazioni in ritardo tutti i restanti?

È stato utile?

Soluzione

Su Mac si sarebbe in grado di utilizzare objc_setAssociatedObject, ma che non esiste su iPhone.

Quindi, in pratica è necessario un qualche tipo di manager Singleton che tiene su questi riferimenti per te, che si passa in un NSObject e fa ciò che si vuole.

Quando stavo facendo qualcosa di simile che ho scritto una classe Singleton che ha preso nelle richieste di eseguire un'azione, e ha iniziato un timer che ha sparato quando l'azione doveva essere fatto - in quel momento la mia classe allenatore decide se la richiesta in questione era ancora valido, e se così licenziato l'azione. Potrei quindi annullare efficacemente un timer, e, inoltre, potrebbe dire al gestore per azzerare il timer, che non ha in realtà, è appena fatto un nuovo timer, ma quando il vecchio temporizzatore sparato l'azione è stato chiesto di svolgere non era valido.

Quindi, in pratica il timer chiamava il Singleton indietro con solo un ID di richiesta, che ha portato ad una voce del dizionario contenente i dettagli della chiamata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top