Objective-C声明Block的几种方式


一.概述

1. As a local variable:

returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...};

2. As a property:

@property (nonatomic, copy, nullability) returnType (^blockName)(parameterTypes);

3. As a method parameter:

- (void)someMethodThatTakesABlock:(returnType (^nullability)(parameterTypes))blockName;

4. As a argument to a method call:

[someObject someMethodThatTakesABlock:^returnType (parameters) {...}];

5. As a typedef:

typedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {...};

二.参考链接

此文参考于 goshdarnblocksyntax,十分感谢.
所有引用内容版权归原作者所有.
使用 知识共享“署名-非商业性使用-相同方式共享 3.0 中国大陆”许可协议 授权.

最近的文章

@

观鸟人将那些某一特定事物的说不清楚的特性称为“Jizz”(我发誓这不是我编造出来的)。这一表达可以被我们拿来描述资深人士如何只看一眼就从 Go 中区分 Rust ,或者从 Elixir 中区分 Ruby。但有些东西就像是竖着的酸痛的大拇指:Perl,它的短小的带有特殊字符的变量名,读起来就像是Q*bert的脏话。Lisp,它使用括号之多由那个古老的笑话最能体现,据说俄罗斯在80年代为了证明他们成功窃取了一些SDI导弹拦截代码的源代码而展示了如下页面: ))) ...…

转载侠继续阅读
更早的文章

pragma与Objective-C的警告

一.概述 #pragma 声明是彰显 Objective-C 工艺的标志之一. 虽然 #pragma 最初的目的是为了使得源代码在不同的编译器下兼容的, 但精明的Xcode编码器将 #pragma 使用到了极致. 在现在的背景下, #pragma 避开了注释和代码之间的界限. 作为预处理指令, #pragma 在编译时进行计算. 但它并不像如 #ifdef...#endif 之类的宏, #pragma 的使用方式不会改变你的应用运行时的行为. 相反的, #pragma 声明主要由 Xc...…

刨根问底继续阅读