为什么Objective-C块语法与方法语法有如此不同?

时间:2014-03-29 17:15:58

标签: objective-c methods syntax objective-c-blocks

这个问题说明了一切。原因:

(void)methodWithParamA:(id)paramA paramB:(id)paramB;
[obj methodWithParamA:valA paramB:valB];

void(^ block)(id paramA, id paramB);
block(valA, valB);

我不确定通过学习这个问题的答案我一定会得到任何东西,但我很困惑,一种语言可以有这么多不同的语法......

1 个答案:

答案 0 :(得分:3)

一个块是功能,没有"当前实例" (或"当前类"对于调用方法)与方法一样。

块调用因此看起来像一个函数调用; a"块" type是一个指针类型,并且非常接近函数指针类型的语法;并且块体紧跟函数体的语法。

C支持块,它具有函数但不具有方法。