谁阻止我的派遣队列被释放?

时间:2015-10-15 01:42:02

标签: ios objective-c grand-central-dispatch dispatch-async

在我正在为客户端工作的应用程序中,我在启动时创建了几个并发调度队列,然后使用dispatch_async将长时间运行的任务添加到它们。

当应用程序准备关闭时,我设置了一个全局退出变量,该变量导致长时间运行的任务退出其运行循环,进行最终清理并退出。

我还设置了(强)变量,用于跟踪我的调度队列为零。根据文档,在ARC中,调度队列由ARC管理,所以一旦完成它,我就不需要在它们上调用dispatch_release。

在调度队列上运行的块也拥有对其队列的拥有引用,但在设置全局退出变量后不久,我已经检查并且所有块都按预期退出。

我添加了指向我的调度队列的__weak变量,在设置我的退出标志并且输出我的强引用后几秒钟,我检查了弱变量中的值。他们应该为零,因为我的队列不应该有更多的拥有引用。但是,它们不会为零,并且在调试器中显示它们会显示引用计数为1。

还有其他人遇到过这个问题吗?我仔细检查了代码,并没有看到任何块捕获问题。这是一个客户端应用程序,我正在做的工作,所以我不能真的在这里发布代码。

0 个答案:

没有答案