【发布时间】:2013-02-01 19:52:46
【问题描述】:
这样做的正确方法是什么? NSTimer 文档是这样说的:
特殊注意事项
您必须从线程中发送此消息 安装了计时器。如果您从其他人发送此消息 线程,与定时器关联的输入源可能不会被移除 从它的运行循环中,这可能会阻止线程退出 正确。
由于GCD 不能保证串行队列总是在同一个线程上运行块,那么确保在同一个线程上安排NSTimer 并使NSTimer 无效的正确方法是什么?
编辑:
根据以下答案的建议,我创建了 MSWeakTimer (https://github.com/mindsnacks/MSWeakTimer),这是一个使用 GCD 的自定义计时器实现,可以从任何队列中使用。
【问题讨论】:
-
+1 for MSWeakTimer...解决了我们可怕的内存问题!
标签: ios objective-c nstimer grand-central-dispatch core-foundation