定义一个简单的block
//------------------------------
// 最普通的block
void (^block)(NSString *str) = ^void(NSString *str){
NSLog(@"%@", str); // 打印 "我回调"
};
block(@"我回调");
//------------------------------
对block进行typedef
typedef void(^MyBlock)(NSString *str, NSArray *array);
//------------------------------
//
MyBlock myBlock = ^void(NSString *str, NSArray *array){
NSLog(@"%@", str); // 打印 "我回调"
NSLog(@"%@", array); // 打印 ("11", "22")
};
myBlock(@"我回调", @[@"11", @"22"]);
//------------------------------
参数为block的方法
例子如下:
在model类的.h声明一个参数为block的方法
// 声明一个方法, 参数是无返回值的block
- (void)objectMethod:(void(^)(NSString *str))block;
// 实现
- (void)objectMethod:(void(^)(NSString *str))block
{
block(@"这是block");
}
Model *model = [[Model alloc] init];
[model objectMethod:^(NSString *str) {
NSLog(@"%@", str);
// 2015-10-04 10:49:34.683 Block-practice[1285:45185] 这是block
}];
注意: block一调用就会回到他的实现部分, 所以说只要调用就得实现, 否者会崩溃