Objective c 如何调试Obj-C中的内存管理?

Objective c 如何调试Obj-C中的内存管理?,objective-c,memory-management,memory-leaks,Objective C,Memory Management,Memory Leaks,很好,-retainCount是无用的,甚至——或者更确切地说是(?)——用于调试目的 那么,假设我们身处一个没有ARC的世界,有什么策略来调试与内存相关的问题呢?当我认为某个对象已被删除时,如何验证该对象已被删除 我这样问是因为,作为objective-c的学习者,我想验证在一些不太明显的情况下(例如,在桥接转换期间发生所有权转移时)何时释放资源.当我想确认我没有泄漏特定类型的物体时,我会做如下操作: static int gAllocCount = 0; @implementation M

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

那么,假设我们身处一个没有ARC的世界,有什么策略来调试与内存相关的问题呢?当我认为某个对象已被删除时,如何验证该对象已被删除


我这样问是因为,作为objective-c的学习者,我想验证在一些不太明显的情况下(例如,在桥接转换期间发生所有权转移时)何时释放资源.

当我想确认我没有泄漏特定类型的物体时,我会做如下操作:

static int gAllocCount = 0;

@implementation MyClass 

- (id)init
{
    NSLog(@"ALLOC MyClass %d", ++gAllocCount);
    return [super init];
}

- (void)dealloc
{
    NSLog(@"DEALLOC MyClass %d", --gAllocCount);
}
这几天,我用的是


仪器中的一些任务并不像它们应该做的那么简单,但一旦你知道如何使用它,它将是一个非常强大的工具。您可以记录每个对象的每个alloc/retain/release/dealloc,并完成堆栈跟踪,还可以按特定类名进行筛选。

-dealloc
中调用
NSLog()
。让它大声说出要释放的对象的指针和类。和/或将断点放置在<代码> DELOLC/中。是“代码> -DELOLC/<代码>以类似的方式调用到C++析构函数吗?是的。(15个字符)是的,它像C++的DeTrutor一样工作。唯一的区别是,如果没有ARC,您必须手动调用
[super dealloc]
。还可以尝试使用内存检测工具(它工作得非常好)。选择
Product/Profile