当系统时钟更改为某个时间时,运行代码的最佳方式是什么?显然我可以投票,但这似乎效率低下。
我不想要计时器;我希望能够在(例如)每天晚上 10 点做一些事情。
当系统时钟更改为某个时间时,运行代码的最佳方式是什么?显然我可以投票,但这似乎效率低下。
我不想要计时器;我希望能够在(例如)每天晚上 10 点做一些事情。
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
睡眠/唤醒通知以及时区更改通知,并相应地调整其触发时间。
我不确定这是您正在寻找的东西,但您可能想尝试 automator,如此处所述。