Basic Memory Management: EFF-ing up my arrays
I was seeing a very strange description for an NSMutableArray object in XCode. Instead of viewing the array’s count, as I expected, I was seeing some garbled message that said {(int)[$VAR count]} objects:
A quick google search pointed me to a conversation about this on stackoverflow. The key point in that link is this, made by Quinn Taylor:
it’s possible that the object has been reclaimed (either by -dealloc or GC) so check to make sure it’s retained if needed.
AH-HA!! I am screwing up my memory management again!
For some context, I went back to the Objective-C bootcamp chapter of the iPhone Developer’s Cookbook, and sure enough, Erica Sadun talks about this on page 112:
Retaining objects set to autorelease allows them to persist beyond a single method.
The problem? My array was created by calling [NSMutableArray array], which returns an autoreleased NSMutableArray object. Thus, it was disappearing once I left the method where I created it.
Changing my code from:
To:
solved my problem. Huzzah!



