Ton*_*ony 12 syntax objective-c objective-c-blocks
我正在尝试定义一个以块为参数的块.
以下代码行有什么问题?
id (^cacheResult)(NSString *, id(^)(void)) = ^(NSString *name, id(^)(void)block) {
NSObject *item = nil;
block();
return item;
};
Run Code Online (Sandbox Code Playgroud)
为什么编译器会像Parameter name omitted
和那样给出错误Expected ")"
?
Max*_*Max 10
id (^cacheResult)(NSString *, id(^)(void)) = ^(NSString *name, id(^block)(void)) {
NSObject *item = nil;
block();
return item;
};
Run Code Online (Sandbox Code Playgroud)
块具有与函数指针类似的语法.你必须在^之后声明块名
Jon*_*pan 10
这就是typedef
发明的原因.像这样嵌入函数指针或块类型是一种痛苦.试试这个:
typedef id (^ InnerBlock)(void);
typedef id (^ OuterBlock)(NSString *, InnerBlock);
Run Code Online (Sandbox Code Playgroud)
它将使块类型的使用更容易阅读.:)
归档时间: |
|
查看次数: |
1728 次 |
最近记录: |