你如何找出保留仪器中物体的内容?

我最近将我的iOS项目转换为ARC。 其中一个视图控制器没有调用其dealloc方法,并且没有根据Instruments进行dealloc’ed。

我已经仔细检查了所有属性并将相应的属性设置为弱。 我还确保将视图控制器作为委托的任何内容都在viewWillDisappear上取消设置,但视图仍然存在于内存中。

我是乐器的新手:我怎么知道保留这个观点的是什么?

好吧,如果你真的被卡住并且程序很复杂(或者抽象,在ARC的情况下),你可以带出大炮:

  • 打开你的Xcode项目
  • 选择可执行文件(如果需要)
  • cmd+i (个人资料)
  • 在Le Wizard中选择“Leaks”仪器(如果需要)
  • 按Return键开始分析
  • 锻炼你的应用
  • 在仪器中按“停止”
  • 确认已选中“分配”工具
  • 单击并按住名为“Statistics”的弹出按钮
  • 选择“对象列表”项
  • 在对象列表中的记录中找到您感兴趣的分配
  • 选择该分配/对象
  • 单击该分配的表格视图单元格中地址右侧的“详细信息箭头”
  • 现在您可以看到与分配相关的所有事件(分配,免费,引用计数操作)
  • cmd+shift+e可以显示扩展细节
  • 浏览此列表中的事件,找到您寻求的不平衡。