On Sun, Oct 26, 2008 at 7:39 PM, Adam R. Maxwell <[EMAIL PROTECTED]> wrote:
>
> On Oct 26, 2008, at 2:47 PM, Kyle Sluder wrote:
>
>> And I've already noticed a memory management error in my own code;
>> -setServers: leaks the old array.  The first lines of the -setServers:
>> method should look like this:
>>
>> -(void)setServers:(NSArray *)newServers
>> {
>>  NSArray *oldServers = servers;
>>  servers = [[newServers copy] retain];
>>  [oldServers release];
>>
>>  // ... the rest of the method ...
>> }
>
> This still leaks, since you copy the parameter and then retain the copy.

Yes it does, because -copy implicitly retains the sender.  My mistake.
 (That's why we disclaim Mail-written code, after all!)  So you can
remove the call to -retain:

-(void)setServers:(NSArray *)newServers
{
 NSArray *oldServers = servers;
 servers = [newServers copy];
 [oldServers release];

 // ... method continues...
}

--Kyle Sluder
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to