I'm getting a weird leak in my NSXMLParser after it's done and released from memory.
It comes up with NSMapTable alloc leak. Here's my stack:
0 libSystem.B.dylib calloc
1 libobjc.A.dylib _internal_class_createInstanceFromZone
2 libobjc.A.dylib class_createInstance
3 Foundation NSAllocateObject
4 Foundation +[NSMapTable alloc] <===== this is the leak...
5 Foundation -[NSXMLParser initWithData:]
6 Foundation -[NSXMLParser initWithContentsOfURL:]
7 idispatch -[RootViewController parseXML:] /Developer/iPhone Apps/iDispatch/Classes/RootViewController.m:562 <================== this is my code calling
8 Foundation -[NSThread main]
9 Foundation __NSThread__main__
10 libSystem.B.dylib _pthread_start
11 libSystem.B.dylib thread_start
Ideas?
Appreciate any light you can shed!
Here's the code:
[NSThread detachNewThreadSelector:@selector(parseXML:)
toTarget:self
withObject:requestStr];
which calls this method on its own thread:
- (void)parseXML:(NSString*)theURL {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:theURL]];
DLog(@"URL: %@",theURL);
[parser setDelegate:self];
[parser parse];
[parser release];
[pool release];
DLog(@"xml parser thread end and released");
}
Same problem here. The leak appears even if I'm just to this:
I've reported the bug to apple, since it seems a serious bug in the NSXMLParser class.
I have the same problem, Malloc 512 Bytes & NSConcreteMapTable Leaks... also this code does not leak if compiled against Snow Leopard 10.6
I can also confirm that the following code works for ios & mac os without leaks.
You should reset the delegate before releasing ([parser setDelegate:nil])
It's perhaps too late but I found this solution :
instead of
No more mem leaks...