Кто-нибудь знает, можно ли отменить уже поставленные в очередь события селектора из стека событий или стека таймера (или любого другого механизма, который используется API) при вызове performSelector:withObject:afterDelay
?
Я использовал этот стек событий для изменения атрибутов изображения на вкладке TabBar и иногда ставил в очередь до 10 секунд изменений в одном быстро выполняемом цикле for ... может быть, 5 миллисекунд или около того.
проблема возникает, если пользователь переключает вкладки ... например, у меня есть изменения изображения в очереди для изображения, которое отображается, как только Вкладка №4 включена, а затем пользователь быстро переключается на Вкладку №3, а затем обратно на вкладку # 4 ... это будет затем повторно ставить в очередь еще 10 секунд изменений, в то время как старая очередь все еще играет, вероятно, около 2 или 3 секунд в очереди, если переключаться достаточно быстро ... но даже достигнув 5 секунд до поток был проблемой.
поэтому мне нужно было каким-то образом отменить старый стек изменений, прежде чем вставлять новый стек ...
Я пишу этот запрос в прошедшем времени, потому что я уже придумал альтернативное решение этой проблемы, добавив фильтр событий с «ястребиными глазами» в функцию воспроизведения. однако мне все еще любопытно, возможна ли отмена мероприятия, потому что я чувствую, что такие знания пригодятся в будущем. спасибо за любую оказанную помощь :)
источник
Ответы:
или
Это
target
исходный объект, для которогоperformSelector:afterDelay:
был вызван.Например:
См. Документацию по яблоку , она находится прямо в конце
performSelector:withObject:afterDelay:
описания.источник
Чтобы отменить все предыдущие запросы на выполнение, вы можете использовать:
источник
Если вы ищете для "performSelector" соответствие "
cancelPreviousPerformSelector
" ... это не так. (Ух, Apple, почему ты так со мной делаешь ???)Методы "сопоставления":
(Просто чтобы его было сложно запомнить, без поиска в документации.)
источник
Проверьте документы NSRunLoop. Вы хотите
-cancelPerformSelectorsWithTarget:
источник