メインスレッドでnstimerによって呼び出されるセレクタを実行することは可能ですか?NSTimerとメインスレッドでセレクタを実行する
NSTimerは独自のスレッドで生成されます。
私の構造は、スレッドがnstimerでメソッドを呼び出し、nstimerがいくつかの更新を行うメソッドを呼び出すのですが、これらの更新がメインスレッドで発生する必要があります。解決策は何ですか?別の方法を追加してperformOnMainThread
と言うと?
メインスレッドでnstimerによって呼び出されるセレクタを実行することは可能ですか?NSTimerとメインスレッドでセレクタを実行する
NSTimerは独自のスレッドで生成されます。
私の構造は、スレッドがnstimerでメソッドを呼び出し、nstimerがいくつかの更新を行うメソッドを呼び出すのですが、これらの更新がメインスレッドで発生する必要があります。解決策は何ですか?別の方法を追加してperformOnMainThread
と言うと?
はい、あなたのタイマーのルーチンからperformOnMainThreadを使用するだけです。ドキュメントから:
タイマーは、実行ループ ループで動作します。タイマーを効果的に使用するには、 の実行ループ(NSRunLoopおよびスレッディング プログラミングガイドを参照)の動作を、 に認識させる必要があります。実行ループがタイマーを保持する特に に注意してください。 を実行ループに追加した後で、タイマーを解放することができます。また
繰り返しタイマーを無効についての注意点:繰り返しタイマーの
をインストールしたのと同じスレッドを無効化メソッドを呼び出す必要があります、あなたは そのinvalidateメソッドを呼び出すことによって タイマーオブジェクトを自分で無効化しなければなりません。 このメソッドを呼び出すと、現在の 実行ループからタイマーが削除されます( )。結果として、あなたは 常に からタイマーが