我将一些旧的代码移植到了Objective-C ARC(自动引用计数),看起来效果很好。但是当一个相当大的高级对象从我的导航栈中弹出时没有被释放,这让我相信我可能在某个地方存在保留环,而ARC已经将其隐藏(或者至少使其难以追踪)。有什么最好的方法来排除这种潜在的保留环和/或确定在ARC下内存泄漏的原因?谢谢!
我将一些旧的代码移植到了Objective-C ARC(自动引用计数),看起来效果很好。但是当一个相当大的高级对象从我的导航栈中弹出时没有被释放,这让我相信我可能在某个地方存在保留环,而ARC已经将其隐藏(或者至少使其难以追踪)。有什么最好的方法来排除这种潜在的保留环和/或确定在ARC下内存泄漏的原因?谢谢!
我刚刚将一个旧的应用程序转换为使用ARC。仪器没有显示任何泄漏,但是分配继续增加。我发现通过查看我知道该删除的内容的活动对象,我能够追踪到保留了而没有释放的问题。以下是基本步骤:
通常最好的方法是使用Instruments应用程序中的泄漏工具(Leaks instrument)。
WWDC 2011的《Instruments有什么新变化》视频讨论了如何在ARC下使用Instruments查找保留环路,从第38分钟开始介绍。