1

システム時計が特定の時間に変更されたときにコードを実行するための最良の方法は何ですか?明らかに私はポーリングできましたが、それは非効率的なようです。

タイマーは必要ありません。毎晩午後10時に何かできるようになりたいです。

4

2 に答える 2

2

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タイマーは、スリープ/スリープ解除通知とタイムゾーン変更通知に自身を登録し、それに応じて起動時間を調整します。

于 2012-07-09T23:04:38.053 に答える
-1

これがあなたが探しているものかどうかはわかりませんが、ここで説明されているように、オートマトンを試してみることをお勧めします。

于 2012-07-09T23:54:12.617 に答える