これを行う正しい方法は何ですか?NSTimer
ドキュメントには次のように書かれています。
特別な考慮事項
このメッセージは、タイマーがインストールされたスレッドから送信する必要があります。このメッセージを別のスレッドから送信すると、タイマーに関連付けられた入力ソースが実行ループから削除されず、スレッドが正常に終了できなくなる可能性があります。
GCD
は、シリアル キューが常に同じスレッドでブロックを実行することを保証していないため、同じスレッドで確実にスケジュールを設定して無効化する正しい方法は何ですかNSTimer
?
編集:
以下の回答のアドバイスに従って、任意のキューから使用できるカスタム タイマーの実装であるMSWeakTimer
( https://github.com/mindsnacks/MSWeakTimer ) を作成しました。GCD