你如何找出保留仪器中物体的内容?
我最近将我的iOS项目转换为ARC。 其中一个视图控制器没有调用其dealloc方法,并且没有根据Instruments进行dealloc’ed。
我已经仔细检查了所有属性并将相应的属性设置为弱。 我还确保将视图控制器作为委托的任何内容都在viewWillDisappear上取消设置,但视图仍然存在于内存中。
我是乐器的新手:我怎么知道保留这个观点的是什么?
好吧,如果你真的被卡住并且程序很复杂(或者抽象,在ARC的情况下),你可以带出大炮:
- 打开你的Xcode项目
- 选择可执行文件(如果需要)
- 按
cmd+i
(个人资料) - 在Le Wizard中选择“Leaks”仪器(如果需要)
- 按Return键开始分析
- 锻炼你的应用
- 在仪器中按“停止”
- 确认已选中“分配”工具
- 单击并按住名为“Statistics”的弹出按钮
- 选择“对象列表”项
- 在对象列表中的记录中找到您感兴趣的分配
- 选择该分配/对象
- 单击该分配的表格视图单元格中地址右侧的“详细信息箭头”
- 现在您可以看到与分配相关的所有事件(分配,免费,引用计数操作)
- 按
cmd+shift+e
可以显示扩展细节 - 浏览此列表中的事件,找到您寻求的不平衡。