Objective-C associated objects leaking under ARC Objective-C associated objects leaking under ARC objective-c objective-c

Objective-C associated objects leaking under ARC


I've found a source of a problem - I had NSZombie objects enabled in both my projects where this bug appears.

As far as I understand, when zombie objects are enabled, the normal instances are replaced with NSZombie upon deallocation, but all the associated objects are left alive! Beware of that behavior!

I've created a rdar://10636309

Update: There's a workaround by Cédric Luthi, and this issue appears to be fixed in iOS 6.


The code you posted works exactly as advertised under ARC. I rewrote your dealloc implementation to help make things a little more obvious.

- (void)dealloc{    NSLog(@"deallocating %@", self);}

Here's the resulting log:

2012-01-03 06:49:39.754 ARC  Stuff[47819:10103] deallocating <DeallocTester: 0x6878800>2012-01-03 06:49:39.756 ARC  Stuff[47819:10103] deallocating <DeallocTester: 0x688b630>

Are you sure you're compiling with ARC enabled?