Re: Memory management with arrays
Re: Memory management with arrays
- Subject: Re: Memory management with arrays
- From: Scott Andrew <email@hidden>
- Date: Sun, 10 Feb 2008 05:36:25 -0800
True.. (late night). So basically. Put a break in bar's dealloc. See
were the extra dealloc is cooming from.
Scott
On Feb 9, 2008, at 10:38 PM, Bill Bumgarner wrote:
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