Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 世卫组织';是什么阻止释放我的调度队列?_Ios_Objective C_Grand Central Dispatch_Dispatch Async - Fatal编程技术网

Ios 世卫组织';是什么阻止释放我的调度队列?

Ios 世卫组织';是什么阻止释放我的调度队列?,ios,objective-c,grand-central-dispatch,dispatch-async,Ios,Objective C,Grand Central Dispatch,Dispatch Async,在我为客户机开发的应用程序中,我在启动时创建了几个并发调度队列,然后使用dispatch_async向其中添加长时间运行的任务 当应用程序准备关闭时,我设置了一个全局quit变量,该变量使长期运行的任务退出其运行循环,执行最终清理并退出 我还将用于跟踪调度队列的(强)变量设置为零。根据文档,在ARC中,调度队列由ARC管理,因此我不需要在完成调度后调用调度发布 调度队列上运行的块也持有对其队列的所有引用,但我已经检查过了,在设置全局quit变量后不久,所有块都会按预期退出 我添加了指向调度队列的

在我为客户机开发的应用程序中,我在启动时创建了几个并发调度队列,然后使用dispatch_async向其中添加长时间运行的任务

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

我还将用于跟踪调度队列的(强)变量设置为零。根据文档,在ARC中,调度队列由ARC管理,因此我不需要在完成调度后调用调度发布

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

我添加了指向调度队列的弱变量,在设置退出标志并清空强引用几秒钟后,我检查弱变量中的值。它们应该为零,因为不应该再有任何对我的队列的所有者引用。但是,它们不会变为零,并且在调试器中显示它们将显示1的引用计数


还有其他人遇到过这个问题吗?我仔细阅读了代码,没有发现任何块捕获问题。这是一个客户端应用程序,我正在为招聘工作,所以很遗憾,我不能在这里发布代码。

这确实应该有效。你100%确定队列中没有任务了吗?邓肯:你不应该看任何引用计数。你有实际证据证明有东西泄漏吗?使用仪器->分配。确保选中“记录参考计数”。运行应用程序到队列应该释放的位置后,向下钻取到其中一个队列并查看其保留/释放记录。摸索输出需要一点时间,但你应该能够找出不平衡的保留是从哪里来的。如果这是在应用程序终止时发生的,我不明白为什么你是否在“泄漏”内存很重要;无论如何,所有东西都将被系统回收。Cocoa本身甚至没有在终止时完成资源清理。然而,我的猜测是,您的队列仍然属于libdispatch。但我想说的是,如果您不能证明存在漏洞,您应该只是“别担心,开心点”。这真的应该有效。你100%确定队列中没有任务了吗?邓肯:你不应该看任何引用计数。你有实际证据证明有东西泄漏吗?使用仪器->分配。确保选中“记录参考计数”。运行应用程序到队列应该释放的位置后,向下钻取到其中一个队列并查看其保留/释放记录。摸索输出需要一点时间,但你应该能够找出不平衡的保留是从哪里来的。如果这是在应用程序终止时发生的,我不明白为什么你是否在“泄漏”内存很重要;无论如何,所有东西都将被系统回收。Cocoa本身甚至没有在终止时完成资源清理。然而,我的猜测是,你的队列仍然属于libdispatch。但我想说的是,如果你不能证明存在漏洞,你应该“别担心,开心点”。