Re: ARC and blocks
Re: ARC and blocks
- Subject: Re: ARC and blocks
- From: Ken Thomases <email@hidden>
- Date: Thu, 26 Jan 2012 17:16:05 -0600
On Jan 26, 2012, at 3:51 PM, Jan E. Schotsman wrote:
> This code is given in the "Transitioning to ARC Release Notes" as an example of accomodating blocks in an ARC environment:
>
> __block MyViewController *myController = [[MyViewController alloc] init…];
> // ...
> myController.completionHandler = ^(NSInteger result) {
> [myController dismissViewControllerAnimated:YES completion:nil];
> myController = nil;
> };
>
> Supposedly this avoids a retain cycle. But where is the cycle? At least two objects are needed for a cycle. What is the second one?
> Excuse me if I'm being dumb.
The block is an object. It has retained myController. myController has retained the block because it's been assigned to the completionHandler property.
By the way, a retain cycle doesn't need two objects. An object can retain itself and that's a cycle.
Cheers,
Ken
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden