1

ボタン、UIImageView、および NSTimer を備えたシンプルなアプリがあります。タイマーは 5 秒ごとに繰り返し開始され、ImageView を新しい画像で更新しますが、ボタンは単にタイマーを停止して別のビューに切り替えます。

問題は、ボタンを押しても数秒間何も起こらないことです (タイマーが再び起動するまで)。

ボタンがタイマーを停止し、タイマーの間隔の間ではなく、いつでもその仕事をする方法はありますか?

ボタンは InterfaceBuilder で定義され、コード内の関数に接続されます。

NSTimer コード: (RunLoop に追加せずに & で試しました)。

updateTimer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(updateImageViews) userInfo:nil repeats:YES];

NSRunLoop* runLoop = [NSRunLoop currentRunLoop];
[[NSRunLoop currentRunLoop] addTimer:updateTimer forMode:NSDefaultRunLoopMode];
[runLoop run];

ありがとう!

4

1 に答える 1

1

「NSRunloop の観点から見ると、NSTimer オブジェクトは「入力」ではないことに注意してください。これらは特別なタイプであり、その意味の 1 つは、起動時に実行ループが返されないことです。」(NSRunLoop Class Reference から) - runloop の続行をブロックしていると思いますか? おそらく解決策としてタイマーを別のスレッドに入れますか?私も自分でこれに問題があります:(

于 2010-04-18T10:19:12.093 に答える