On Wed, May 18, 2011 at 2:16 PM, Ken Thomases <k...@codeweavers.com> wrote:
> On May 18, 2011, at 12:55 PM, Bing Li wrote:
>
>>        NSXMLElement *root = [NSXMLNode elementWithName:"MessageRoot"];
>
> As per Cocoa's memory management conventions, you don't not own the object 
> returned by -[NSXMLNode elementWithName:].  You have not invoked a method 
> whose name contains "alloc", "new", or "copy" or which is explicitly 
> documented as giving its caller ownership rights and responsibilities.
>
>>        NSXMLElement *peerKeyElement = [NSXMLNode elementWithName:"PeerKey"];
>
> Same here.
>
>>        NSXMLElement *peerNameElement = [NSXMLNode 
>> elementWithName:"PeerName"];
>
> Same here.
>
>>        NSXMLElement *passwordElement = [NSXMLNode 
>> elementWithName:"Password"];
>
> Same here.
>
>>        NSData *data = [xmlDoc XMLDataWithOptions:NSXMLNodePrettyPrint];
>
> Same here.
>
>>        [passwordElement release];
>> //        [peerNameElement release];
>> //        [peerKeyElement release];
>>        [root release];
>>        [xmlDoc release];
>>        [xmlStr release];
>>        [data release];
>
> Many of these releases are wrong, not just the ones you have commented out.
> Of these, you only own xmlDoc and xmlStr, so those are the only ones you are
> entitled to release.  If you didn't happen to get exceptions from releasing 
> the
> others, it was an unhappy accident.  (Unhappy because it hid your bug.  It is
> always better for bugs to be found early.)
If it helps Bing (and coming from someone who frequently needs the
same sort of help): (1) Run you code using Instruments, or (2) select
Executable -> Arguments and add NSZombieEnabled = YES. Both should
help you flush out the problems early (as Ken suggests).

> Please review the Memory Management Programming Guide 
> <http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/MemoryMgmt/>.
>   It explains all of this.
>
Also grab a book or two. It will help you digest it. Nuremberg's book
would be a good choice since the doctor stays active on this list.

Jeff
_______________________________________________

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 arch...@mail-archive.com

Reply via email to