如何将Block
传递给Function
/Method
我尝试了- (void)someFunc:(__Block)someBlock
,但没有效果。
即。Block
的类型是什么
发布于 2011-10-29 10:22:55
块的类型因其参数和返回类型而异。在一般情况下,声明块类型的方式与声明函数指针类型的方式相同,但用^
替换*
。将块传递给方法的一种方法如下:
- (void)iterateWidgets:(void (^)(id, int))iteratorBlock;
但正如你所见,这是混乱的。您可以改为使用typedef
来使块类型更清晰:
typedef void (^ IteratorBlock)(id, int);
然后将该块传递给如下所示的方法:
- (void)iterateWidgets:(IteratorBlock)iteratorBlock;
发布于 2011-10-29 10:24:15
这可能会有所帮助:
- (void)someFunc:(void(^)(void))someBlock;
发布于 2013-11-01 14:14:19
您可以这样做,将block作为block参数传递:
//creating a block named "completion" that will take no arguments and will return void
void(^completion)() = ^() {
NSLog(@"bbb");
};
//creating a block namd "block" that will take a block as argument and will return void
void(^block)(void(^completion)()) = ^(void(^completion)()) {
NSLog(@"aaa");
completion();
};
//invoking block "block" with block "completion" as argument
block(completion);
https://stackoverflow.com/questions/7936570
复制相似问题