在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