繁体   English   中英

ARC循环保留检测

[英]ARC circular retain detection

我将一些旧代码移植到Objective-C ARC(自动引用计数),它看起来效果很好。 当一个相当大的高级对象从我的导航堆栈中弹出时,它不会被释放,让我相信我有一个ARC隐藏在我身边的某个保留周期(或者至少很难跟踪)。 清除这个潜在保留周期的最佳方法是什么和/或什么是确定ARC下内存泄漏原因的好方法? 谢谢!

我只是转换了一个较旧的应用程序来使用ARC。 仪器没有泄漏,但分配继续增加。 我发现通过查看我知道应该删除的内容的实时对象,我能够在没有发布的情况下追踪保留。 以下是基本步骤:

  1. 使用仪器中的分配工具
  2. 玩你的应用程序一段时间(如果你知道什么没有发布,这会更快)
  3. 将统计信息更改为“分配”跳转栏中的对象
  4. 按类别排序,找到未发布对象的类名
  5. 找到一个活动实例,然后单击内存地址旁边的小右箭头
  6. 现在,您可以查看对象的保留和释放历史记录

仪器中对象历史的屏幕截图

最好的方法通常是在仪器应用程序中使用Leaks仪器

来自WWDC 2011的什么是新的仪器”视频讨论了使用仪器在ARC下找到保留周期,从大约38分钟开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM