KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm trying to catch scenarios if there is no autorelease pool in place. This is my test app. - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { [self performSelectorInBackground:@selector(bgOperation:) withObject:nil]; } - (void)bgOperation:(id)obj { NSString *string [[[NSString alloc] init] autorelease]; } I've tried setting the breakpoint objc_autoreleaseNoPool. I've tried profiling with Instruments / Leaks. OSX 10.7.5 XCode 4.3.3 Targeting 10.6, AutomaticRefCounting = NO, GarbageCollection = Unsupported. I understand NSApplication includes it's own autorelease pool. But my understanding was that each call to performSelectorInBackground: needed it's own autorelease pool. Update from the suggestions: I tried this.. in main.m, no luck. int main(int argc, char *argv[]) { NSString *junk = [[[NSString alloc]init]autorelease]; return NSApplicationMain(argc, (const char **)argv); } And this.. In my appDelegate, also no result. - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { [NSThread detachNewThreadSelector:@selector(bgOperation:) toTarget:self withObject:nil]; } And this.. With pthreads in my main.m void *doJunk(void *ptr){ NSString *junk = [[[NSString alloc]initWithString:@"string with no pool"]autorelease]; NSLog(@"%@", junk); pthread_exit(NULL); } int main(int argc, char *argv[]) { pthread_t thread; pthread_create(&thread, NULL, doJunk, NULL); return NSApplicationMain(argc, (const char **)argv); } I understand that due to the OS level maybe nothing is leaking (still haven't confirmed), but when I target 10.6 I see a number of "No Pool" messages in the logs. If it only leaks due to the OS level, then I need a way to catch these scenar
Tags (comma-separated)
Save Edits
Cancel