Jav*_*oto 9 objective-c core-foundation nstimer grand-central-dispatch ios
这样做的正确方法是什么?该NSTimer文件说,这样的:
特别注意事项
您必须从安装了计时器的线程发送此消息.如果从另一个线程发送此消息,则可能无法从其运行循环中删除与计时器关联的输入源,这可能会阻止线程正常退出.
既然GCD不能保证串行队列总是在同一个线程上运行块,那么确保NSTimer在同一个线程上调度和失效的正确方法是什么?
编辑:
根据以下答案的建议,我创建了MSWeakTimer(https://github.com/mindsnacks/MSWeakTimer),这是一个使用的自定义计时器实现GCD,可以在任何队列中使用.
das*_*das 11
您不应NSTimer在由GCD管理的匿名工作线程上安装.
将调度计时器源与GCD一起使用,而不是使用dispatch_source_create NSTimer(3).
NSTimer依赖于当前线程的runloop,这对于GCD队列来说不是有意义的.有关GCD和runloop API的更多详细信息,请参阅WWDC2012 GCD会话.
| 归档时间: |
|
| 查看次数: |
2037 次 |
| 最近记录: |