1

I would like to demonstrate memory leak and zombie object in Xcode Instruments on a class. I've found it pretty hard to trigger on purpose, especially with ARC turned on. Do you know how could I create them?

Gabriel.Massana
  • 8,165
  • 6
  • 62
  • 81
itarato
  • 795
  • 1
  • 8
  • 24

2 Answers2

3

For A leak:

Create two classes, A and B. A should have an @property that strongly references an instance of B. B should have an @property that strongly references an instance of A.

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

That'll create a leak.

For a Zombie

Create a @property that is of type assign (or a variable of type __unsafe_unretained. Then:

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

That should create a zombie situation; a dangling pointer, more specifically.

Daij-Djan
  • 49,552
  • 17
  • 113
  • 135
bbum
  • 162,346
  • 23
  • 271
  • 359
0

A more elegant way to show a leak is to have a class having strong pointer to itself

A* a = [A new];
a.leakingpointer=a;
user4951
  • 32,206
  • 53
  • 172
  • 282