如何定义一个闭包
Block的本质是将一个函数方法作为一个参数,传入另外一个函数。既然是函数那就包括三个要素
- 函数名(即闭包名)
- 返回值
- 参数
所以说闭包的定义为
typedef void(^completion)(NSString *code, NSString *message);
// typedef 返回值(^闭包名)(参数1, 参数2);
闭包如何使用呢
闭包本身是要作为一般函数的参数传入的,所以说「闭包名」就相当于「NSString *string」中的NSString。
- (void)someMethod:(NSString *)param1 blockParam:(completion)completion;
闭包名的讨论
很多时候闭包并不会在函数前进行type定义,所以还会直接在函数中出现
- (void)someMethod:(NSString *)param1 blockParam:(void(^)(NSString *code, NSString *message))completion;
所以说「(^)」中如果不填入闭包名的话,会产生默认的名称
void(^completion)(NSString *code, NSString *message)
//自定义名称: completion
void(^)(NSString *code, NSString *message)
//默认名称: void(^)(NSString *, NSString *)