1.作为本地变量的block:
返回值类型 ^(block名称 (参数类型) = ^返回值类型(参数) {block主体};
2.作为属性的block:
@property (nonatomic,copy) 返回值类型(^block名称)(参数类型);
3.作为方法参数的block:
- (void)方法名称:(返回值类型 (^) (参数类型) ) block名称;
4作为方法传递参数的block:
[调用对象 调用方法名称: ^返回值类型 (参数) { block主体 }];
5.作为预定义类型的block:
typedef 返回值类型 ^(类型名称) (参数);
类型名称 block名称 = ^返回值类型 (参数) {block主体};