如何在Xcode Instruments中演示内存泄漏和僵尸对象?

时间:2012-12-09 21:19:47

标签: objective-c xcode memory-leaks instruments nszombie

我想在类中的Xcode Instruments中演示内存泄漏和僵尸对象。我发现很难故意触发,特别是在ARC开启的情况下。你知道我怎么能创造它们吗?

2 个答案:

答案 0 :(得分:3)

对于泄漏:

创建两个类A和B.A应该有一个强引用B实例的@property .B应该有一个强引用A实例的@property。

A *a = [A new];
B *b = [B new];
a.b = b;
b.a = a;

这会造成泄密。

对于Zombie

创建一个类型为assign的@property(或__unsafe_unretained类型的变量。然后:

A *a = [A new];
A.dangerDanger = [NSObject new];

这应该会造成僵尸情况;一个悬垂的指针,更具体地说。

答案 1 :(得分:0)

显示泄漏的一种更优雅的方法是让一个类具有强大的指针指向自身

A* a = [A new];
a.leakingpointer=a;