2011-03-31 23 views
9

かなり基本的な問題です。performSelectorの停止:実行中から

[self performSelector:@selector(startSequence:) withObject:nil afterDelay:1.0]; 

しかし、これを呼び出した後にこれを停止する方法はありますか? ありがとうございました ディスコ

答えて

12

+[NSObject cancelPreviousPerformRequestsWithTarget:]が必要です。待機中の複数の実行要求がある場合、すべての実行要求が取り消されます。

細かい制御が必要な場合は、+[NSObject cancelPreviousPerformRequestsWithTarget:selector:object:]を使用できます。述語と一致するものはすべて取り消されます。複数の同一のリクエストが待機している場合は、1つをキャンセルするメカニズムはありません。

+0

メインスレッドで 'performSelector:afterDelay:'を呼び出す場合は、メインスレッドでも 'cancelPreviousPerformRequestsWithTarget:'を必ず呼び出すようにしてください。それ以外の場合はキャンセルされません! – malex

11

確かにありますが、

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(startSequence:) object:nil]; 
関連する問題