在UIViewController
中,我有一個NSTimer
計劃每隔1秒觸發一次,使用scheduledTimer
方法,所以我可以每秒在視圖中更新一個UILabel
。但問題是,NSTimer
開火似乎被延遲,只要我在UIView
內的MKMapView
周圍搖晃。所以延遲導致UILabel
不是統一更新,這是不好看的。由MKMapView
平移導致的延遲是否會佔用太多資源?我如何安排NSTimer
,以便不會有任何延遲,但我平移MKMapView
? (但是,請注意,我沒有在某種後臺線程上安排NSTimer
,它在主線程中。)謝謝。NSTimer似乎被MKMapView平移減慢了?
1
A
回答
3
如果您使用scheduledTimerWithTimeInterval(...)
來創建您的計時器,它將被添加到模式爲NSDefaultRunLoopMode
的當前runloop。計時器不會在您的應用程序忙於事件跟蹤時觸發,即如果您在UIScrollView中滾動,或者如果您與UI進行任何其他交互。
如果您使用NSRunLoopCommonModes
作爲模式,則計時器將在您與用戶界面進行交互時觸發,您可以創建一個未計劃的NSTimer並將其自動添加到runloop中。
let timer = NSTimer(timeInterval: 1.0, target: self, selector: Selector("timerFired:"), userInfo: nil, repeats: true)
NSRunLoop.currentRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
如需進一步信息,問題NSDefaultRunLoopMode vs NSRunLoopCommonModes包含了不同runloop模式一個很好的解釋。
相關問題
- 1. NSTIMER似乎被忽略
- 2. MKMapView似乎是零?
- 3. 動畫過快。似乎無法減慢
- 4. 圖片加載似乎減慢了Javascript的執行速度
- 5. angular.dart似乎很慢
- 6. Qt :: BackgroundRole似乎被忽略了
- 7. C++ cin.getline似乎被跳過了
- 8. IE 10打印似乎被縮小了
- 9. const_cast似乎被C++模板忽略了?
- 10. iPhone 4S,OpenGL ES似乎太慢了。怎麼了?
- 11. MKMapView拒絕單一平移
- 12. Javascript setInverval似乎很慢?
- 13. 春季測試似乎慢
- 14. XSSFCell風格似乎很慢
- 15. SplFixedArray似乎比陣列()慢
- 16. JSFiddle似乎壞了
- 17. Xamarin iOS構建似乎比平常運行速度慢
- 18. document.createDocumentFragment()似乎在被追加後被清空了?
- 19. Python比D快嗎? IO操作似乎減慢了很多D ...發生了什麼?
- 20. Hadoop的流:減速似乎並沒有被運行時,mapred.reduce.tasks = 1
- 21. QGraphicsItem setTransformOriginPoint似乎被忽略
- 22. Hibernate @Enumerated似乎被忽略
- 23. RadioList似乎不被渲染
- 24. JAVA .dat似乎被重置
- 25. 點擊似乎被模糊
- 26. INSTALL_BASE似乎被忽略Makefile.PL
- 27. NSURLSessionTaskPriority似乎被忽略?
- 28. InternalsVisibleTo似乎被忽略
- 29. allowableMovement似乎被忽略
- 30. cursor.moveToFirst似乎被跳過
是否在後臺線程中設置了定時器來做計算,然後用'dispatch_async'獲取主線程來更新UI,工作? dispatch_async示例顯示在此asnwer:http://stackoverflow.com/questions/16283652/understanding-dispatch-async – Zhang 2015-04-04 13:19:52
你是如何安排計時器?如果您希望它在滾動/平移時觸發,則需要使用「NSRunLoopCommonModes」來安排它。 – dan 2015-04-04 14:00:03