Iphone 圆弧检测
我将一些旧代码移植到Objective-C ARC(自动引用计数)中,它似乎工作得很好。除了一个相当大的高级对象,当它从我的导航堆栈中弹出时,它没有被释放,这让我相信我在某个地方有一个保留周期,ARC对我隐藏了(或者至少使跟踪变得困难)。消除此潜在保留周期的最佳方法是什么?确定ARC下内存泄漏原因的最佳方法是什么?谢谢 最好的方法通常是使用Iphone 圆弧检测,iphone,objective-c,ios,xcode,automatic-ref-counting,Iphone,Objective C,Ios,Xcode,Automatic Ref Counting,我将一些旧代码移植到Objective-C ARC(自动引用计数)中,它似乎工作得很好。除了一个相当大的高级对象,当它从我的导航堆栈中弹出时,它没有被释放,这让我相信我在某个地方有一个保留周期,ARC对我隐藏了(或者至少使跟踪变得困难)。消除此潜在保留周期的最佳方法是什么?确定ARC下内存泄漏原因的最佳方法是什么?谢谢 最好的方法通常是使用 “仪器中的新功能”视频讨论了使用仪器查找ARC下的保留周期,从大约38分钟开始。我刚刚将一个较旧的应用程序转换为使用ARC。仪器显示没有泄漏,但拨款继续增加
“仪器中的新功能”视频讨论了使用仪器查找ARC下的保留周期,从大约38分钟开始。我刚刚将一个较旧的应用程序转换为使用ARC。仪器显示没有泄漏,但拨款继续增加。我发现,通过查看活动对象中我知道应该删除的内容,我可以在不发布的情况下跟踪保留内容。以下是基本步骤:
X-code 8引入了内存图调试工具: 请在此处查看完整参考:
看来我找到了!具有“不安全”且未恢复的块引用;将LOL的块更改为弱块,这似乎已经解决了它。注:仪器没有发现这一点,并且确实没有将其标记为潜在泄漏情况。无论如何,谢谢你的建议!哎呀,再挖了几次之后,发现漏洞还在附近。但只有当我把它推到导航堆栈上时它才会泄漏。。。如果我使用-init或-initWithNibName:bundle:,然后使用nil它的引用,它将正确地释放。否则,当我将它推到导航堆栈上,然后将其弹出时,它永远不会解除分配。