Tom*_*eit 1 memory-leaks memory-management objective-c
什么是检查Cocoa类在ARC下取消分配的最快方法,在我自己的类中,当我想检查内存问题时,我在- (void) dealloc;方法中放了一个NSLog ,所以我知道它何时被解除分配.但对于像NSArray这样的Obj-C类,我怎么知道它何时被解除分配?如果我将类设置为nil,那么使用ARC也会自动从内存中删除它吗?
您可以使用仪器中的分配工具找出何时(任何类)取消分配类.这是更好的方法.但是,仍然可以覆盖dealloc并在ARC下记录消息.不同之处在于,当您覆盖dealloc时,您无法调用[super dealloc](编译器会为您处理).
如果您遇到因向已解除分配的实例发送消息而导致的问题,请使用仪器中的Zombies仪器.它会告诉您何时向已释放的对象发送消息,允许您查看有问题的调用堆栈,以及消息对象的分配/保留/释放/ dealloc历史记录.
在ARC下,你不应该像所有权语义那样考虑确切的对象生命周期.也就是说,当您在ARC下将强变量设置为nil时,将释放引用的对象.它是否被解除分配(即"从内存中删除[s]")取决于是否有任何其他对象具有强引用.此外,如果它在任何自动释放池中,则在池耗尽之前不会释放它(在ARC和MRC下都是如此).同样,使用Allocations工具可以发现任何特定情况下发生的细节.
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |