Czy ktoś wie, czy podczas wywoływania możliwe jest anulowanie już ustawionych w kolejce zdarzeń selektora ze stosu zdarzeń lub stosu czasomierza (lub jakiegokolwiek mechanizmu używanego przez API) performSelector:withObject:afterDelay
?
Używałem tego stosu zdarzeń do zmiany atrybutów obrazu na karcie TabBar i czasami umieszczałem w kolejce do 10 sekund zmian w jednej szybko wykonywanej pętli for ... może około 5 milisekund.
problem pojawia się, gdy użytkownik przełącza karty ... na przykład, że mam zmiany obrazu w kolejce do obrazu, który jest wyświetlany, gdy tylko karta nr 4 jest włączona, a następnie użytkownik szybko przełącza się na kartę nr 3, a następnie z powrotem do karty # 4 ... spowodowałoby to ponowne umieszczenie w kolejce kolejnych 10 sekund zmian, podczas gdy stara kolejka nadal grała, prawdopodobnie około 2 lub 3 sekund w kolejce, jeśli zostanie przełączona wystarczająco szybko ... ale nawet dotrze w 5 sekund do strumień był problemem.
więc potrzebowałem jakiegoś sposobu, aby anulować stary stos zmian przed umieszczeniem nowego stosu ...
Piszę to zapytanie w czasie przeszłym, ponieważ wymyśliłem już alternatywne rozwiązanie tego problemu, dodając filtr zdarzeń jastrzębiego oka w funkcji odtwarzania. jednak nadal jestem ciekawy, czy odwołanie imprezy jest możliwe, bo mam przeczucie, że taka wiedza przyda się w przyszłości. dziękuję za udzieloną pomoc :)
źródło
Odpowiedzi:
lub
Jest
target
to oryginalny obiekt, na którymperformSelector:afterDelay:
został wywołany.Na przykład:
Zobacz dokumentację Apple , jest na końcu
performSelector:withObject:afterDelay:
opisu.źródło
W celu anulowania wszystkich wcześniejszych zleceń wykonania możesz skorzystać z:
źródło
Jeśli szukasz elementu „performSelector”, aby dopasować go do „
cancelPreviousPerformSelector
”… tak nie jest. (Ugh, Apple, dlaczego mi to robisz ???)Metody „dopasowywania” to:
(Tylko po to, żeby było to wyjątkowo trudne do zapamiętania, bez przeszukiwania dokumentów.)
źródło
Sprawdź dokumentację NSRunLoop. Chcesz
-cancelPerformSelectorsWithTarget:
źródło