Re: NSXMLNode's `stringValue' method and memory leaks
Re: NSXMLNode's `stringValue' method and memory leaks
- Subject: Re: NSXMLNode's `stringValue' method and memory leaks
- From: Glen Simmons <email@hidden>
- Date: Fri, 2 Dec 2005 18:47:30 -0600
On Dec 2, 2005, at 6:36 PM, Damien Sorresso wrote:
I'm using NSXMLNode's `stringValue' method to get the raw string
value of an XML node, but it seems like every time I call this
method, I get
2005-12-02 18:15:20.818 XMLTest[15637] *** _NSAutoreleaseNoPool():
Object 0x307ea0 of class NSCFString autoreleased with no pool in
place - just leaking
in the run log. But from what I can tell, the object it returns
isn't autoreleased. The assignment statement is
curVal = [[names objectAtIndex:i] stringValue];
The `names' array contains `NSXMLNode' objects, and it is obtained
from a `NSXMLNode' passed into the function. Every time the above
statement is executed, the aforementioned message is printed to the
console. The address of the object in the message is always the
same as the address of `curVal'.
What's going on here?
You need an autorelease pool. Even though you aren't autoreleasing
anything, Cocoa obviously is. *Any* interaction with Cocoa may create
autoreleased objects that you don't know about. Since the main thread
already has an autorelease pool in place, I'm guessing you're doing
this on a secondary thread. If you check the docs, it says somewhere
to always begin your threaded method with
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
and end it with
[pool release];
Glen Simmons
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden