¿Alguien sabe si es posible cancelar los eventos de selector ya en cola de la pila de eventos o la pila del temporizador (o cualquier mecanismo que utilice la API) cuando llama performSelector:withObject:afterDelay
?
Estaba usando esta pila de eventos para alterar los atributos de una imagen dentro de una pestaña TabBar, y a veces ponía en cola hasta 10 segundos de cambios en un ciclo ejecutado rápidamente ... tal vez 5 milisegundos más o menos.
el problema surge si el usuario cambia de pestaña ... como por ejemplo, tengo las alteraciones de imagen en cola para una imagen que se muestra tan pronto como se habilita la pestaña # 4, y luego el usuario cambia rápidamente a la pestaña # 3 y luego vuelve a la pestaña # 4 ... esto luego volvería a poner en cola otros 10 segundos de alteraciones mientras la cola anterior aún se estaba reproduciendo, probablemente alrededor de 2 o 3 segundos en la cola si se cambia lo suficientemente rápido ... pero incluso llegando a los 5 segundos en la corriente era un problema.
así que necesitaba alguna forma de cancelar la antigua pila de cambios antes de poner una nueva pila en ...
Estoy escribiendo esta consulta en tiempo pasado porque ya se me ocurrió una solución alternativa a este problema agregando un filtro de eventos de ojos de halcón en la función de reproducción. sin embargo, todavía tengo curiosidad por saber si es posible cancelar el evento, porque tengo la sensación de que ese conocimiento será útil en el futuro. gracias por cualquier ayuda prestada :)
fuente
Respuestas:
o
El
target
es el objeto original en el queperformSelector:afterDelay:
se llamó.Por ejemplo:
Consulte los documentos de Apple , está justo al final de la
performSelector:withObject:afterDelay:
descripción.fuente
Para cancelar todas las solicitudes de ejecución anteriores, puede utilizar:
fuente
Si está buscando "performSelector" para que coincida "
cancelPreviousPerformSelector
" ... no es así. (Ugh, Apple, ¿por qué me haces eso ???)Los, er, ah, los métodos de "coincidencia" son:
(Solo para que sea más difícil de recordar, sin buscar los documentos).
fuente
Consulte la documentación de NSRunLoop. Usted quiere
-cancelPerformSelectorsWithTarget:
fuente