block的几种出现方式

附上原文链接,http://fuckingblocksyntax.com

1、block作为本地变量

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

2、block作为属性

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

3、block作为函数参数

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

4、作为方法参数的时候被调用

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

5、typedef定义block

typedef returnType(^typeName)(parameterTypes);

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

原文地址:https://www.cnblogs.com/littlepony/p/5955633.html