【发布时间】:2012-05-03 17:57:35
【问题描述】:
我正在开发一个应用程序,该应用程序具有一个事件计时器,该计时器可以为一个可以持续很长时间的事件(呃!)计时。
我已经在相当长的一段时间内使用计时器完成了其他应用程序,之前从未遇到过这个问题。
基本上,发生的情况是,当应用程序启动时,我用[NSDate date] 设置了一个NSDate 值。然后,我有一个预定的NSTimer 对象,它会定期触发并通过将当前的[NSDate date] 值与原始值进行比较来检查已经过去了多少时间。
据我所知,这是做这类事情的正确方法,但如果我在上一段中有错误的假设,请纠正我。
无论如何,在过去几周在我的新 iPad 上进行测试时,我曾多次(并且随机地)发现我的系统时间似乎在跳跃。有一次,时间似乎跳了 64 秒!这意味着我的计时器标签显示“00:03”,然后立即显示“01:08”(正确添加一秒,然后错误添加64)!!!在其他时候,它会导致负面的事件持续时间。
这是间歇性发生的,所以我基本上是在问这是否可能:
- iOS 5.1 错误
- 与特定于新 iPad 的硬件有关(在 iPad 第一代、第二代、多个 iPhone/iPod Touch 版本等上从未出现过此问题...)
- 错误代码(我承认这是可能的,但 NSDate 值不会变成 NSDate 值以外的值,我已经检查了项目中设置此
singleton值的每个地方。
有没有人有过类似的经历?有人可以帮忙吗?
【问题讨论】:
-
由于图形更新(标签等)发生在主线程中,听起来好像你的主线程被更好地在辅助线程中运行的东西占用和阻塞了。
-
@Till 我不认为是这样,因为它不仅可以向前跳跃(而且远远超过任何延迟会导致),而且它还可以向后跳跃,即使我的应用程序已启动!
-
@mbm30075 好点,这让我不太可能怀疑。
标签: iphone ios ipad nsdate nstimer