1
7
要回答您的问题,是的,另一种方法是使用您在threadedmethod中创建的nsautoreleasepool,当apool释放/排出时,您自动释放的任何内容都将被释放。 因此,您的错误不太可能直接源于此代码(除非有更多的情况发生)。 在nsautoreleasenopool上放置一个断点(在断点窗口中按名称添加),然后在调试器中运行代码,当在没有池的情况下调用autorelease时,它将停止,这样可以解决您的问题。 |
2
0
在您的示例中,是的,自从调用
不管怎样,
前面提到的文章( http://thegothicparty.com/dev/macos/nsautoreleasepool/ )很清楚。 |
3
-1
自动释放池会传递到另一个方法。但是,当线程函数结束时,应该调用[apool release]而不是[apool drain]。它们大致相当,但apool的释放会使nsautoreleasepool释放自身以及池中的所有其他对象。当线程函数在调用drain之后结束时,自动释放池的保留计数仍然为+1!很可能,“刚刚泄漏”的物体是apool! 编辑: Jim Puls认为释放和排放是等效的。苹果文档清楚地说,它们在非垃圾收集环境中是相同的,而在垃圾收集情况下,排水更好。我不看医生的过错! 这篇文章概括介绍了NSAutoReleasePools——它将帮助您找到正确的方向。由于存在一个自动释放池的虚拟堆栈,所以应用程序中的任何地方都将使用最顶层的池,而不管对象在何处自动释放。 |
TheKing · 为什么数组的地址可以有负值? 2 年前 |
yurnero · MATLAB:“加载”一个快速访问功能 6 年前 |
joe · 一页可以同时在两个工作集中吗? 6 年前 |
Jaques · “.exe”已触发断点 6 年前 |
adn bps · 在函数中修改变量的高效内存方法 6 年前 |
Gauraang Khurana · C语言中分段错误的不稳定行为 6 年前 |
Rajesh K · 如何查找设备中存在的广告垃圾? 6 年前 |