原文鏈接:http://www.reibang.com/p/dac248188e27
1、作為變量
// 1
返回值類型 (^block的名稱)(參數(shù)類型) = ^返回值類型(參數(shù)) {...};
// 2
returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...};
2放典、作為屬性
// 1
@property (nonatomic, copy) 返回值類型 (^block的名稱)(參數(shù)類型);
// 2
@property (nonatomic, copy) returnType (^blockName)(parameterTypes);
3辽幌、作為方法聲明的參數(shù)
// 1
- (void)方法名:(返回值類型 (^)(參數(shù)類型))block的名稱;
// 2
- (void)someMethodThatTakesABlock:(returnType (^)(parameterTypes))blockName;
4、作為方法實(shí)現(xiàn)的參數(shù)
// 1
[對(duì)象/類 方法名:^返回值類型 (參數(shù)) {...}];
// 2
[someObject someMethodThatTakesABlock:^returnType (parameters) {...}];
5现横、作為typedef
// 1
typedef 返回值類型 (^類型名稱)(參數(shù)類型);
類型名稱 block的名稱 = ^返回值類型(參數(shù)) {...};
// 2
typedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {...};