开发者

Objective-C Blocks - use as an object

With reference to the code below, once a block has been put into an array, how could you take that block object and run the actual code in the block.

Another Question: If I call a method in a block like below, does that block encapsulate the code in that method or capture the signature of the method and call it that way?

-(void)blockCalledMethod
{
    NSLog(@"Hello World");
}

-(v开发者_开发技巧oid)programStart
{       

    NSArray * array = [[NSArray alloc] initWithObjects:[[^ { [self blockCalledMethod];} copy] autorelease],nil];    

    id pointerToBlock = [array lastObject];
}


Call it like this:

void (^pointerToBlock)(void) = [array lastObject];
pointerToBlock(); // because ^ {} is void(^)(void)

You cannot declare pointerToBlock as an id if you want to call it directly, because the compiler has to recognize it as a block type and not just an object.

If I call a method in a block like above, does that block encapsulate the code in that method or capture the signature of the method and call it that way?

I should think self refers to the calling class.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜