Re: Memory management with arrays
Re: Memory management with arrays
- Subject: Re: Memory management with arrays
- From: Bill Bumgarner <email@hidden>
- Date: Sat, 9 Feb 2008 22:38:11 -0800
On Feb 9, 2008, at 10:16 PM, Scott Andrew wrote:
Here is my guess, just because i hit this recently. It had to do
with the [bar autorelease] call. This returns an autoreleased
object. That may not be valid when you cam back around to
removeAllObjects. Try the following:
void foo
{
[array removeAllObjects];
Bar* bar = [[Bar alloc] init];
[array addObject:bar];
[bar release];
}
the following should also work..
void foo
{
[array removeAllObjects];
Bar* bar = [[[Bar alloc] init] autorelease];
[array addObject:bar];
The OP's code, as posted, was fine. -autorelease returns the object
being autoreleased and alloc returns an object that has been retained.
Most likely, OP has overreleased one of the objects in the array. Run
with NSZombieEnabled to see what object is being overreleased.
Better yet, turn on malloc stack logging (no compact) and use
malloc_history to see allocation events at that address.
b.bum
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden