根据系统时钟在特定时间运行代码

时间:2012-07-09 22:49:57

标签: macos cocoa time scheduled-tasks

当系统时钟变为特定时间时,运行代码的最佳方法是什么?显然我可以进行民意调查,但这似乎效率低下。

我不想要一个计时器;我希望能够在(例如)每天晚上10点做一些事情。

2 个答案:

答案 0 :(得分:2)

NSTimer几乎是你以后在Cocoa中做的事情,并且可以创建一个带有“开火日期”的东西,但如果计算机在此期间进入睡眠状态,该日期将被推迟(或者如果时钟改变了。)

通过计时器轮询可能不是一个糟糕的选择;它允许您安排许多事件,但只有一个机制激活它们。一个每15或30秒重复一次的计时器,并查看NSDates列表以查看是否应该发生某些事情,不会产生有意义的性能影响。

另一种选择是使用NoodleKit的NSTimer类别来解释时钟变化。有关于它的博客文章:http://www.noodlesoft.com/blog/2010/07/01/playing-with-nstimer/,代码在GitHub上可用:https://github.com/MrNoodle/NoodleKit计时器为NSWorkspace睡眠/唤醒通知以及时区更改通知注册自己并调整其相应的开火时间。

答案 1 :(得分:-1)

我不确定这是你在找什么,但你可能想尝试使用automator,正如here所述。