2010-10-19 2 views
3

Если я делаю это в подклассе UIView:iPhone - не cancelPerformSelectorWithTarget работает

[self performSelector:@selector(doSomething) withObject:nil afterDelay:5]; 

Затем отменить его, как это (я пробовал обе версии):

[[NSRunLoop currentRunLoop] cancelPerformSelectorsWithTarget:self]; 
//[[NSRunLoop mainRunLoop] cancelPerformSelectorsWithTarget:self]; 

"йоЗотеЬЫпд" метод все еще вызван. Что я делаю не так?

+1

+1 Я думаю, что я заметил это недавно; я не мог заставить его работать, поэтому я закончил использование неповторяющегося «NSTimer». : P –

+0

Но это не обязательно связано с NSTimer. Это просто отменяет запрос ... – sol

+0

Вы уверены, что оба метода работают в одном потоке? Потому что, если они этого не делают, они нацеливаются на разные циклы запуска. – DarkDust

ответ

1

В ссылке класса NSObject:

cancelPreviousPerformRequestsWithTarget: селектор: объект:

Отмена выполнения запросов ранее зарегистрированных с performSelector: withObject: afterDelay :.

Использование:

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(doSomething) object:nil]; 

Надеется, что это помогает.

Смежные вопросы