あなたはタイマーを取り消すことができるようにしたい場合は、を参照する必要があなたがキャンセルしているタイマー、それは周りのタイマーへのポインタを保持する必要があることを意味し、ジャスティンの答えを参照してください。
タイマーへの参照は正しい方法ですが、完全性のために貧しい人のタイマーとして-performSelector:withObject:afterDelay:
メソッドを使用することもできます。その呼び出しは+cancelPreviousPerformRequestsWithTarget:
を使用して無効にすることができます。サンプルコード:
- (void) viewDidLoad
{
[super viewDidLoad];
[self performSelector:@selector(timerTick) withObject:nil afterDelay:10];
}
そして:
- (void) viewWillDisappear
{
[NSObject cancelPreviousPerformRequestsWithTarget:self];
[super viewWillDisappear];
}
しかし、あなたはキャンセルしますあなたのオブジェクト上で保留中の他の実行セレクタの要求があるかもしれないので、これは、それを行うには正しい方法ではありません。タイマーを守るのが最善です。キャンセルするものを正確に知ることができます。
ちなみに、-viewDidLoad
でタイマーを実行するのは悪い考えです。ビューの読み込みは、表示されるビューとは関係なく、いつでも実行できます。
* NSTimerオブジェクト*を作成したくありません。 'scheduledTimerWithTimeInterval'を使って既に作成しています。 – sch
私は私が作成するタイマーを保持していないということです。出来ますか? – Voloda2