1、 block做为方法内变量时:
returnType (^blockName)(parameterTypes) =
^returnType(parameters) {...};
NSString* (^doubleString)(NSString*) = ^NSString*(NSString* str){
return @"verygood";
};
NSString* test = doubleString(@"good");
2、block做为property时
@property (nonatomic, copy, nullability) returnType (^blockName)(parameterTypes);
@property (nonatomic,copy,nullable) NSString*
(^lastName)(NSString* fullname);
self.lastName = ^NSString*(NSString* para){
return @"verygood";
};
3、做为方法参数
- (void)someMethodThatTakesABlock:(returnType (^nullability)(parameterTypes))blockName;
//该方法的调用
[someObject someMethodThatTakesABlock:^returnType (parameters) {...}];
- (void)someMethodThatTakesABlock:(NSString* (^)(NSString*))blockName{
};
[self someMethodThatTakesABlock:^NSString*(NSString* str){
return @"";
}];
4、做为typedef
typedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {...};
block编程指南