這個問題說明了一切。爲什麼:爲什麼Objective-C語法塊的語法與方法語法如此不同?
(void)methodWithParamA:(id)paramA paramB:(id)paramB;
[obj methodWithParamA:valA paramB:valB];
和:
void(^ block)(id paramA, id paramB);
block(valA, valB);
我不知道我會一定通過學習這個問題的答案,是否有所收穫,但我百思不得其解的是一個語言可以有這麼多不同的語法...
後者是(幾乎)普通的C,Objective C中的很多非對象相關的東西。方括號的東西是Objective C擴展到處理對象的語言。這方面的語言與C完全不同,但是保持了很多類似C的風格(主要是我相信與C庫標題兼容)。 – Dave
[這裏是一個很好的帖子](http://nilsou.com/blog/2013/08/21/objective-c-blocks-syntax/)關於這個主題,可以幫助你 – Alladinian
@Dave - 後者是純C 。它幾乎不是普通的C. https://en.wikipedia.org/wiki/Blocks_(C_language_extension) – ArtOfWarfare