我剛剛完成了我的應用程序和beta版測試,發現了一個在秒錶部分的錯誤... 秒錶使用nstimer來進行計數並有一個表來存儲圈數,但是當捲動表滾動時,手錶停止或暫停,並且不彌補失去的時間。NSTimer在runloop被阻止時沒有觸發
這被拖延被淘汰使用:
startingTime = [[NSDate date] timeIntervalSince1970];
來計算所經過的時間。
但我仍然在使用NSTimer觸發每隔0.1秒,這意味着即使經過的時間將在最後正確更新,滾動仍然停滯計時器...並將其與蘋果計時器進行比較我想知道那個秒錶是否有一個單獨的線程來計算經過的時間。有誰知道這是如何完成的?
現在,使用從紀元在某種意義上是運作良好的時間,但它啓動,停止,&重新啓動秒錶
當手錶停止時存儲的時間和用於計算的事情複雜化手錶重新啓動時的偏移量,但似乎引入了一些延遲,並且在重新啓動手錶時,時間會明顯向前跳躍。
任何想法的根本原因或解決方案將不勝感激。
這仍然不能保證整體計時的準確性。定時器不能保證以完全配置的時間間隔觸發。更糟糕的是,如果每個定時器觸發都會增加整個時間間隔,每次定時器觸發時錯誤的數量都會增加! – bbum 2010-01-04 01:06:04
我並不打算爭辯說,除了定時器會在控件跟蹤時觸發外,他們會保證其他任何東西。在圈速開始時存儲日期並使用它來計算運行時間比您的答案中所陳述的準確得多(並且更簡單的IMO)。 – 2010-01-05 00:06:40
+1爲我工作。 bbum的回答對我沒有任何意義。 – bentford 2011-07-30 22:17:51