很好established -retainCount
无用,甚至 - 或者更确切地说 (?) - 用于调试目的。
因此,假装我们处于一个没有ARC的世界,有什么策略来调试与内存相关的问题?我认为如何验证对象是否被删除?
我问,因为作为objective-c的学习者,我想验证资源何时在一些不那么过时的情况下被释放(例如,在桥接演员表期间进行所有权转移)。
答案 0 :(得分:1)
当我想要确认我没有泄漏某种特定物体时,我会做以下事情:
static int gAllocCount = 0;
@implementation MyClass
- (id)init
{
NSLog(@"ALLOC MyClass %d", ++gAllocCount);
return [super init];
}
- (void)dealloc
{
NSLog(@"DEALLOC MyClass %d", --gAllocCount);
}
现在,我使用Instruments。
仪器中的一些任务并不像它们应该的那么简单,但是一旦你知道如何使用它,它就是一个非常强大的工具。您可以记录每个对象的每个alloc / retain / release / dealloc,包括堆栈跟踪,您可以按特定的类名进行筛选。