gpt4 book ai didi

cocoa - 我如何才能收到 Cocoa 应用程序中系统时间更改的通知?

转载 作者:行者123 更新时间:2023-12-03 16:03:54 25 4
gpt4 key购买 nike

我有一个 cocoa 应用程序,用于记录事件的日期戳。我需要知道系统时间何时重置以及重置多少,但我似乎无法在任何地方发出通知来告诉我发生了这样的事情。由于 NTP 重置时钟或用户重置(例如从系统偏好设置),可能会发生此更改。如果只有一个我可以注册接收的 NSNotification 那就太好了,但我愿意接受任何建议。

最佳答案

Apple 添加了 NSSystemClockDidChangeNotification ,NSDate 的一部分,在 Snow Leopard (10.6) 中。在 Leopard (10.5) 或更早版本中似乎没有办法做到这一点。根据 Apple NSDate docs :

Posted whenever the system clock is changed. This can be initiated by a call to settimeofday() or the user changing values in the Date and Time Preference panel. The notification object is null. This notification does not contain a userInfo dictionary.

这似乎并没有告诉你时间已经改变了“多少”。您可以通过定期(例如,在 NSTimer 中每 5 秒)使用 [NSDate date] 捕获系统时间来计算,将其保存到变量中,然后NSSystemClockDidChangeNotification 触发,获取新日期并使用 NSDate 的 timeIntervalSinceDate: 方法将两者进行比较以获得差异。

精确度不是毫秒甚至秒,但相当接近。

编辑:参见this post 。您可以使用 UpTime() C 命令来获取 CPU TIC 中的系统正常运行时间(稍后可以将其转换为秒)。您可以使用它来计算时间变化了多少(假设系统没有重新启动或 sleep )。即使系统时钟被用户或网络时间协议(protocol)更改,该方法仍然有效。

关于cocoa - 我如何才能收到 Cocoa 应用程序中系统时间更改的通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/690326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com