Re: Blocks and Methods...
Re: Blocks and Methods...
- Subject: Re: Blocks and Methods...
- From: Mikkel Islay <email@hidden>
- Date: Sat, 28 Jan 2012 21:56:03 +0100
On 28 Jan 2012, at 20:50, R wrote:
> That is precisely what is giving me the confusion. If retained the
> received block in a NSMutableArray, the block should stick around (via
> a strong array pointer) for another method. It only stays around if I
> equate the block to a typedef variable and then put that variable in
> the array. I'm using ARC.
Blocks are allocated on the stack, unlike other objective-C objects. As a consequence, they cannot be retained and are destroyed with the stack. That means they must be copied to the heap explicitly to be available beyond the scope they were created in, as Ken Thomases wrote.
With ARC, blocks are normally copied to the heap automatically as required. However, adding an object to a container implicitly casts it to id, which is not automatically copied with ARC. Hence, you must copy it explicitly.
Mikkel
_______________________________________________
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