Luk*_*ice 4 cocoa-touch objective-c objective-c-blocks
参考下面的代码,一旦一个块被放入一个数组,你如何获取该块对象并运行该块中的实际代码.
另一个问题:如果我在下面的块中调用方法,该块是否封装了该方法中的代码或捕获方法的签名并以这种方式调用它?
-(void)blockCalledMethod
{
NSLog(@"Hello World");
}
-(void)programStart
{
NSArray * array = [[NSArray alloc] initWithObjects:[[^ { [self blockCalledMethod];} copy] autorelease],nil];
id pointerToBlock = [array lastObject];
}
Run Code Online (Sandbox Code Playgroud)
像这样称呼它:
void (^pointerToBlock)(void) = [array lastObject];
pointerToBlock(); // because ^ {} is void(^)(void)
Run Code Online (Sandbox Code Playgroud)
你不能声明pointerToBlock为id,如果你想直接调用它,因为编译器将其识别为一个块类型,而不仅仅是一个对象.
如果我在上面的块中调用方法,该块是否封装了该方法中的代码或捕获方法的签名并以这种方式调用它?
我应该考虑self调用类.
| 归档时间: |
|
| 查看次数: |
1634 次 |
| 最近记录: |