1

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

4

2 回答 2

3

对于泄漏:

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

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

这会造成泄漏。

对于僵尸

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

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

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

于 2012-12-09T22:03:20.340 回答
0

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

A* a = [A new];
a.leakingpointer=a;
于 2013-12-06T08:10:17.850 回答