Luc*_*uke 19 iphone cocoa objective-c
在阅读了NSRunLoop的文档后,我不太了解.我正在产生一个辅助线程,其中包含一个每1秒启动一次的NSTimer.使用performSelectorOnMainThread更新屏幕上的标签..
然而,为了让它工作我需要一个runloop但我不明白它的概念?
谁能试着解释一下呢?
谢谢.
bbu*_*bum 29
运行循环是有效的:
while(... get an event ...)
... handle event ...;
Run Code Online (Sandbox Code Playgroud)
它运行在一个线程上; 主线程具有主事件循环,其中处理用户事件并且发生大多数UI绘图等.该文档解释得很详细.
但是,在您的情况下,您不需要线程.
听起来你正在做的就是定期更新UI中的标签; 一些不是非常计算密集的东西.
只需在主线程中安排您的计时器并完成它.无需启动线程,使用performSelectorOnMainThread:
或产生保证跨线程数据一致性的所有复杂性.
对不起 - 不明白你的问题.
在内部,运行循环的工作原理是在运行循环中基本上放置一个标志,表示"经过这段时间后,激活计时器".没有涉及额外的线程,更好的是,它不是轮询检查时间.将运行循环视为有效维护时间轴.它会被动地让时间流逝,直到在时间线上发现一些有趣的东西(所有这些都没有投票 - 投票很糟糕.要避免.)
但这确实意味着Timer永远不会100%准确.同样,如果你有一个计时器每秒重复一次,它会随着时间的推移而漂移.
也; 而不是直接触发绘图事件.您的计时器应使需要更新的视图无效,然后让底层对象在最佳实际更新屏幕时处理.
归档时间: |
|
查看次数: |
13257 次 |
最近记录: |