0

タイトルが示すように、特定の条件が満たされるまで、または 5 秒が経過するまで実行される while ループがあります。

これを解決する最善の方法は何ですか? に関するいくつかの簡単なチュートリアルを見てきましたが、指定された時間間隔の後に起動されNSTimerたセレクターが何があっても実行されるようです。NSTimer条件が満たされない場合にのみ実行する必要があります...

4

1 に答える 1

1

NSTimer スケジュールされたアクション ストア タイマーを作成するだけで、達成したいことに到達したら、このタイマーを無効にして、アクションをトリガーしないようにします。

基本的:

 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(yourAction) userInfo:nil repeats:NO];

 some code

//for deactivating the timer
[timer invalidate];
timer = nil;

これを使用して、メインスレッドで NSTimer を開始できます (上記のコードが確実に機能するようにするため)。

[self performSelectorOnMainThread:@selector(startTimerMethod) withObject:someOrNoObject waitUntilDone:NO];
于 2012-09-06T11:56:27.600 に答える