【发布时间】:2012-02-10 09:44:40
【问题描述】:
我曾经在调试器下使用 [myVar retainCount] 来验证我的一些变量是否具有预期的保留计数,尤其是对于没有自定义 dealloc 的 var。
在 ARC 模式下如何做到这一点?如何确保没有内存泄漏?
注意:我知道 ARC 应该为我处理这个问题,但生活远非完美,在现实生活中,您的对象有时由第三方库分配(使用保留?)并且从未被释放。
我这样做的图片:
MyObj *myObj=[[MyObj alloc] init];
然后我打电话
[somethingElse doSomethingWithMyObj:myObj];
后来,我愿意
myObj=NULL;
如果我的程序运行良好,我的预期是 myObj 被销毁,但似乎并非如此......
那么我该如何跟踪这个,尤其是如果 somethingElse 不是由我管理的?
现在,关于工具:如果不重新启动 mac 并从头开始,在我的 mac(5 Meg)上运行内存工具似乎非常困难。这真的很烦人!甚至在程序开始之前仪器就一直在崩溃,那么有替代解决方案吗?
【问题讨论】:
-
使用 Instruments 分析您的应用。
-
对象的保留计数在很大程度上是没有意义的,在这种情况下肯定是没有意义的。
-
您的
doSomethingWithMyObj:方法是否在做任何事情来获得对您的对象的强引用? -
pre-ARC 可以覆盖“retain”以查看谁保留了您的对象。在我们新的 ARC 世界中,有没有办法做到这一点?
-
您的 Mac 有 5 Meg?需要解释一下吗?
标签: iphone ios automatic-ref-counting