我有一个简单的 OSX 菜单栏应用程序,状态项附有一个菜单,我有一个可以手动发送fire
到 NSTimer 的菜单项。
我希望该菜单项显示下一次触发计时器之前的秒数。有没有办法获得下一次火灾的时间或 NSTimer 下一次被解雇的时间?
NSTimer 具有返回 NSDate 的 fireDate。NSDate 有 timeIntervalSinceNow。
我知道已经有一个公认的答案,但我突然想到,您实际上可能对 , 根本不感兴趣fireDate
:
使用该日期,您只会看到相同的秒数,只要显示时间 - 如果它直接显示在菜单栏中,则没有进度指示......</p>
因此,我建议采用稍微不同的方法:
简单:NSTimer
不是实时的东西。计时器触发的实际日期,其计划fireDate
将略有不同。但是由于重复计时器会重新安排时间而不调整该差异,因此这些偏差会加起来。
这些偏差是完全不可预测的,因为它们不仅取决于应用程序的负载,还取决于整个系统。所以它们会在“完全可以忽略不计”和“ZOMFG”之间变化!