And of course, I need some rest: On Mon, Apr 19, 2010 at 12:38 PM, Julien Jalon <jja...@gmail.com> wrote:
> I have to add that *you can't assume* using dispatch_async on main queue > within an NSApp will automatically drain the autorelease pool. > > AppKit drains the autorelease pool upon NSEvents dispatch. > > > On Mon, Apr 19, 2010 at 12:36 PM, Julien Jalon <jja...@gmail.com> wrote: > >> I don't see anything wrong with the output being 1/2: >> >> -(void) test >> { >> testString = NULL; >> >> dispatch_async(dispatch_get_global_queue(0, 0), ^{ >> dispatch_async(dispatch_get_main_queue(), ^{ >> >> NSString* aString = [[NSMutableString alloc] init]; >> * // retain count is 1* >> >> NSLog(@"retainCount: %d",[aString retainCount]); >> >> testString = [aString retain]; *// retain count is >> 2* >> >> [aString *auto*release]; *// retain count is still >> 2 - object will be released sometimes in the future* >> >> >> dispatch_async(dispatch_get_main_queue(), ^{ >> NSLog(@"retainCount: %d",[testString >> retainCount]);* // you can't assume the future release has already been >> called* >> }); >> }); >> }); >> } >> >> On Mon, Apr 19, 2010 at 11:35 AM, Henk Kampman < >> henk.kamp...@secondmove.com> wrote: >> >>> Have a look at the following code >>> >>> -(void) test >>> { >>> testString = NULL; >>> >>> dispatch_async(dispatch_get_global_queue(0, 0), ^{ >>> dispatch_async(dispatch_get_main_queue(), ^{ >>> >>> NSString* aString = [[NSMutableString alloc] >>> init]; >>> NSLog(@"retainCount: %d",[aString retainCount]); >>> >>> testString = [aString retain]; >>> >>> [aString release]; >>> >>> dispatch_async(dispatch_get_main_queue(), ^{ >>> NSLog(@"retainCount: %d",[testString >>> retainCount]); >>> }); >>> }); >>> }); >>> } >>> >>> As expected the output is: >>> >>> retainCount: 1 >>> retainCount: 1 >>> >>> However when I change [aString release] to [aString autorelease] the >>> output shows: >>> >>> retainCount: 1 >>> retainCount: 2 >>> >>> Why? >>> >>> BTW I first noticed this behavior when my application started leaking the >>> QTMovie objects I was creating in a block. >>> >>> - >>> >>> Henk_______________________________________________ >>> >>> 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/jjalon%40gmail.com >>> >>> This email sent to jja...@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