detachNewThreadSelector:target:withObject: retains both the target and the object.
-BJ On Wed, Jun 2, 2010 at 11:39 AM, Jerry Krinock <je...@ieee.org> wrote: > I allocate an object Foo on the main thread. Then I spin off a secondary > thread and give it a long task to do there, but immediately release the > object, on the main thread. I expect that the -release invoke -dealloc > immediately, on the main thread. To my amazement, the object is not > deallocced until the task is finished, and to my further amazement, the > dealloc method runs on the secondary thread. > > Someone please enlighten me. This is Mac OS 10.6.3, Objective-C garbage > collection = unsupported. > > Jerry Krinock > > > #import <Cocoa/Cocoa.h> > > @interface Foo : NSObject { > } > @end > > @implementation Foo > > - (void)sleep5 { > NSLog(@"Sleeping for 5 on secondary thread") ; > sleep(5) ; > } > > > - (void)dealloc { > [super dealloc] ; > NSLog(@"Did dealloc a Foo") ; > } > > @end > > > int main(int argc, char *argv[]) { > NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init] ; > > Foo* foo = [[Foo alloc] init] ; > [NSThread detachNewThreadSelector:@selector(sleep5) > toTarget:foo > withObject:nil] ; > [foo release] ; > > sleep(10) ; > > NSLog(@"Terminating") ; > [pool release] ; > return 0 ; > } > > RESULT: > > 10:23:00.879 LittleTool[83071:1103] Sleeping for 5 on secondary thread > 10:23:05.884 LittleTool[83071:1103] Will dealloc a Foo > 10:23:05.885 LittleTool[83071:1103] Did dealloc a Foo > 10:23:10.879 LittleTool[83071:80f] Terminating > > _______________________________________________ > > 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/bjhomer%40gmail.com > > This email sent to bjho...@gmail.com > _______________________________________________ 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