On Dec 6, 2013, at 8:05 AM, dangerwillrobinsondan...@gmail.com wrote:

>>> On 6 Dec 2013, at 11:26 am, Graham Cox <graham....@bigpond.com> wrote:
>>> 
>>>               NSBlockOperation* op = [NSBlockOperation 
>>> blockOperationWithBlock:^
>>>               {
>>>                   CGContextClipToRect( ncx, tileRect );
>>> 
>>>                   [self drawTile:tileRect inContext:ncx];
>>>               }];
>> 
>> 
>> A question for blocks experts:
>> 
>> Is the value of <tileRect> here captured when the block is created,or when 
>> it is run?
>> 
>> If the latter, it’s going to be probably wrong most of the time, so how can 
>> I make sure it is captured when the block is created?
>> 
> 
> 
> It's the latter IIRC
> You'll want to capture it outside and prefix it to be block scoped. 


No it’s not and no you don’t. 


        int x = 3;
        void (^block)(void) = ^{ NSLog(@"%d", x); };
        x = 5;
        block();

The result is 3 not 5.


--
Seth Willits




_______________________________________________

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to