システム時計が特定の時間に変更されたときにコードを実行するための最良の方法は何ですか?明らかに私はポーリングできましたが、それは非効率的なようです。
タイマーは必要ありません。毎晩午後10時に何かできるようになりたいです。
システム時計が特定の時間に変更されたときにコードを実行するための最良の方法は何ですか?明らかに私はポーリングできましたが、それは非効率的なようです。
タイマーは必要ありません。毎晩午後10時に何かできるようになりたいです。
NSTimer
後でCocoaで何かを行う方法とほぼ同じであり、「発火日」を使用して作成することは可能ですが、その間にコンピューターがスリープ状態になると(または時計が変わると)、その日付は延期されます。
タイマーを介したポーリングは、それほど悪いオプションではないかもしれません。これにより、多くのイベントをスケジュールできますが、それらをアクティブ化するメカニズムは1つだけです。15秒または30秒ごとに繰り返され、リストをNSDates
調べて何かが発生するかどうかを確認するタイマーは、パフォーマンスに大きな影響を与えることはありません。
もう1つのオプションは、時計の変更を考慮したNoodleKitのNSTimer
カテゴリを使用することです。それについてのブログ投稿があります:http ://www.noodlesoft.com/blog/2010/07/01/playing-with-nstimer/ 、そしてコードはGitHubで利用可能です:https ://github.com/MrNoodle/ NoodleKitNSWorkspace
タイマーは、スリープ/スリープ解除通知とタイムゾーン変更通知に自身を登録し、それに応じて起動時間を調整します。
これがあなたが探しているものかどうかはわかりませんが、ここで説明されているように、オートマトンを試してみることをお勧めします。