如何在Obj-C中调试内存管理?

时间:2014-11-06 11:12:06

标签: objective-c memory-management memory-leaks

很好established -retainCount无用,甚至 - 或者更确切地说 (?) - 用于调试目的。

因此,假装我们处于一个没有ARC的世界,有什么策略来调试与内存相关的问题?我认为如何验证对象是否被删除?

我问,因为作为objective-c的学习者,我想验证资源何时在一些不那么过时的情况下被释放(例如,在桥接演员表期间进行所有权转移)。

1 个答案:

答案 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,包括堆栈跟踪,您可以按特定的类名进行筛选。