我曾尝试使用泄漏工具,并“分析”等找到泄漏,但它无法找到它。使用分配我可以确定未被释放的对象。
我注意到(通过在dealloc方法中添加调试语句),不会为这些对象调用dealloc。
如何确定哪些对象持有对这些对象的引用并阻止它们被释放?
答案 0 :(得分:11)
如果您需要查看对象使用仪器的保留,释放和自动释放的位置:
在仪器中运行,在分配中设置“记录参考计数”(您必须停止记录以设置选项)。导致选择器运行,停止记录,搜索那里的ivar(datePickerView),向下钻取,你将能够看到所有保留,释放和自动释放发生的位置。
答案 1 :(得分:2)
分析工具无法检测到问题。使用分配工具捕获所有引用计数是一个开始,但是有很多类我无法识别或直接访问,我无法使用此方法追踪问题。相反,我列出了我直接负责的类,并逐行调查每个类,直到找到问题为止。原因是我使用了一些第三方库,这些库没有按预期减少某些对象的保留计数。我想在这种情况下,遵循更好的软件工程原则/设计模式,并且进行彻底的代码审查可能会更早地解决问题。
答案 2 :(得分:1)
我首先要构建和分析项目(IDE中的Shift命令B)。
答案 3 :(得分:1)
您可以在有问题的类中重载retain / release / autorelease实现(如果它是SDK类,则可以使用类别)并在那里设置断点。每当某些东西保留你的物体时,你的断点就会被击中。