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.