【发布时间】:2014-02-02 18:43:12
【问题描述】:
关于教程编程与ObjectiveC。
following code 让我很困惑:
自定义类型定义在处理返回块或将其他块作为参数的块时特别有用。考虑以下示例:
void (^(^complexBlock)(void (^)(void)))(void) = ^ (void (^aBlock)(void)) {
...
return ^{
...
};
};
complexBlock 变量指的是一个将另一个块作为参数 (aBlock) 并返回另一个块的块。
重写代码以使用类型定义使其更具可读性:
typedef void (^XYZSimpleBlock)(void);
XYZSimpleBlock (^betterBlock)(XYZSimpleBlock) = ^ (XYZSimpleBlock aBlock) {
...
return ^{
...
};
};
我理解重写代码: 但我看不懂源代码:
void (^(^complexBlock)(void (^)(void)))(void) = ^ (void (^aBlock)(void)) {
...
return ^{
...
};
}
按照我的理解应该是:
(void (^) (void)) (^complexBlock) (void (^)(void) = ^ (void (^aBlock)(void)) {
...
return ^{
...
};
};
【问题讨论】:
-
当然这很令人困惑。这是一个 C 声明!它们很难阅读,而且一直如此。 :)
-
in my understand, it should be:- 不,为什么不呢?你肯定知道块的声明类似于函数。这不是函数返回类型声明的工作方式。读一本 C 书。
标签: ios objective-c objective-c-blocks