[NSTimerscheduledTimerWithTimeInterval:target:selector:userInfo:] を使用してタイマーをスケジュールしましたが、起動した時点で無効にしたいと考えています。
- (id)init
{
[NSTimer scheduledTimerWithInterval:1 target:self selector:@selector(fired:) userInfo:nil repeats:YES];
}
- (void)fired:(NSTimer *)timer
{
if (someCondition) {
[timer invalidate];
}
}
これは許されますか?ドキュメントの状態
このメッセージは、タイマーがインストールされたスレッドから送信する必要があります。このメッセージを別のスレッドから送信すると、タイマーに関連付けられた入力ソースが実行ループから削除されず、スレッドが正常に終了できなくなる可能性があります。
これがこのタスクを達成するための適切な方法でない場合: 適切な方法は何ですか?