私はNSTimerスレッドを残すために[NSThread exit]
を使用しています。 アプリケーションを完全に停止します。
どのようにNSTimerスレッドを停止または終了しますか?
私はNSTimerスレッドを残すために[NSThread exit]
を使用しています。 アプリケーションを完全に停止します。
どのようにNSTimerスレッドを停止または終了しますか?
あなたは間違いなくNSTimer
を停止する場合は、あなたが一時的にしたい場合は、あなたがApple Documentationから
[timer setFireDate:[NSDate distantFuture]];
を使用することを検討して発射するタイマーを防ぐ
[timer invalidate];
を使用することがあります。
実行ループでスケジュールされると、指定された間隔でタイマーが起動しますそれは無効にされます。非繰り返しタイマーは、起動後直ちに無効になります。ただし、繰り返しタイマーの場合は、invalidateメソッドを呼び出すことによって、タイマーオブジェクトを自分自身で無効化する必要があります。このメソッドを呼び出すと、現在の実行ループからタイマーの削除が要求されます。その結果、タイマーがインストールされた同じスレッドから常にinvalidateメソッドを呼び出す必要があります。タイマーを無効にすると即座に無効になり、実行ループに影響しなくなります。次に、実行ループは、無効化メソッドが返される直前または後で、タイマーを削除して解放します。無効化されると、タイマーオブジェクトは再利用できません。
[timer invalidate];
timer = nil;
私はあなたがNSTimer thread
によって何を意味するかわからないが、あなたは、スケジュールNSTimerインスタンスを停止するには、[NSTimer invalidate]
を呼び出すことができます。
無効にする前にタイマーが有効であることを確認してください。
if ([timer isValid]) {
[timer invalidate];
timer = nil;
}
タイマは独自のスレッドで実行されず、同じスレッドで実行されます。イベントループが繰り返されると、タイマーのいずれかが起動されるべきかどうかがチェックされ、実行する必要がある場合、実行ループはそれらを起動しますが、すべて同じスレッド内で発生します。 – dreamlax