这是来自apple blocks docs,我很难理解这个,请任何人解释一下
如果没有显式声明块的返回值 表达式,它可以从内容中自动推断出来 块。如果推断返回类型并且参数列表无效, 那么你也可以省略(void)参数列表。如果或何时 存在多个return语句,它们必须完全匹配(使用 必要时铸造。)
答案 0 :(得分:4)
1)如果没有显式声明块表达式的返回值,可以从内容中自动推断出它 块
块
void ^(float aFloat) {
printf("value is :%f",aFloat);
};
也可以写成
^(float aFloat) {
printf("value is :%f",aFloat);
};
不说回报类型。返回类型是自动推断的。对于返回非空值的块,情况确实如此。
2)如果推断出返回类型且参数列表为空,那么您也可以省略(void)参数列表
这有点难以理解和混淆,因为文档特别说
不带参数的块必须在参数中指定void 列表。
我相信这种障碍是可能的。
^{
printf("Hello world");
}
其中推断出返回值,因此,不需要void。我不确定这一点,所以想澄清一下。
3)如果或当存在多个return语句时,它们必须完全匹配(必要时使用cast)。
简单来说,一个块必须只返回一种类型的数据。它不能返回int 和 float。