基本的に、私はキーイベントを受け取ったときに繰り返すべきこのタイマーを持っていて、ユーザーがキーを離したときに無効にします。しかし、NSRunLoopのaddTimer:forMode:
を呼び出しても、タイマーを "検証"することはできません。なぜこれが起こっているのか、これをどのように修正できるのか誰にも分かりますか?ありがとう。NSTimerを無効にした後でNSTimerを「検証する」方法は?
答えて
無効タイマーは使用できません。アップルのドキュメントから
:
それが無効化されるまで、実行ループ、指定された 間隔でタイマーがトリガーに予定したら。非繰り返しタイマは、起動直後に 自身を無効にします。ただし、繰り返しタイマーの場合は、 メソッドを呼び出すことによって自分自身を無効にする必要があります。 メソッドこのメソッドを呼び出すと、現在の実行ループの からタイマーの削除が要求されます。その結果、タイマーがインストールされている同じスレッドから常に無効化 メソッドを呼び出す必要があります。 タイマーを無効にすると即座に無効になり、実行ループに影響しないようになります( )。次に、実行ループは、 タイマーを削除し、無効化メソッドが返される直前に、または 後の時点でタイマーを解放します。無効化されると、タイマーオブジェクトは再利用できません。
NSTimerを無効にしたら、もう一度使用しないでください。
代わりに、新しいタイマーインスタンスを作成し、そのインスタンスを使用してNSRunLoopのaddTimerメソッドに追加します。個人的には、NSTimerのscheduledTimerWithTimeIntervalを呼び出すほうが好きです。なぜなら、それはすべての処理をワンショットで行うからです。 NSTimer docsから
:
このメソッドを呼び出すと、現在の 実行ループからのタイマーの削除を要請します。結果として、無効化メソッド は、タイマーがインストールされた同じスレッドから常に呼び出す必要があります。 を無効にすると、タイマーはただちにそれを無効にして、ループ実行に影響しなくなります。 その後、実行ループは、無効化メソッドが返る前に、または後で、 のいずれかのタイマーを削除して解放します。 が無効になると、タイマーオブジェクトは再利用できません。
右、私はそれを知らなかった...ありがとう! – TheAmateurProgrammer
- 1. NSTimerを無効にする
- 2. NSTimerは無効 - 重複タイマー
- 3. NSTimer効果なし...?
- 4. ユーザーが終了するとNSTimerを無効にして無効にします。
- 5. NSTimerオブジェクトを作成しないとタイマーを無効にする方法
- 6. Cocoa:無効化時のNSTimer gdb
- 7. バックグラウンドスレッド内でNSTimerを呼び出すときにNSTimerを無効にできません。
- 8. NStimerをゲームアプリケーションで使用する方法
- 9. NSTimer問題:NStimerは2秒後に連続して呼び出されます---
- 10. 無効な引数エラーの[NSTimerの無効化]
- 11. はNSTimer
- 12. NSTimer
- 13. NSTimerをループさせる方法
- 14. ナビゲーションを先送りにするときにNSTimerを無効にする
- 15. NStimerの新しい画面の後に
- 16. NSTimerをバックグラウンドで実行するには
- 17. NSTimerをバックグラウンドで実行するには
- 18. (停止)NSTimerを無効にすることができません
- 19. NSTimerの自動無効化が行われたかどうかを確認する方法は?
- 20. NSTimer Confusion
- 21. NStimer animation
- 22. NSTimerカウントダウンラベル
- 23. ホームボタンを押した後にNSTimerが起動しない
- 24. すぐにNSTimerをトリガーするには?
- 25. NSTimerはsigabrtを有効にしています
- 26. NSTimerは高価ですか?
- 27. NSTimerがクラッシュする
- 28. 60秒後にNSTimerをキャンセルするには?
- 29. iPhoneは - NSTimerは火
- 30. NSTimerを一時停止するには?
興味深いことに、NSRunLoop addTimerがありますが、有効化されていたremoveTimerがないため、タイマーを無効にすることなく起動できませんでした。それは、アップルがそのAPIを追加するのを邪魔しないように、ポートの作成よりもタイマーの作成が安いことでなければなりません。 –