block实际上就是 Objective-C 语言对于闭包的实现,是一段匿名的代码段。block的作用有很多,比如说,它可以配合dispatch_queue,方便的实现简单的多线程编程和异步编程,我们经常用到的就是使用block传值。页面间传值的方法有多种,代理,单例,通知,KVO,还有block。使用block不进可以省去冗长的代码,还提高了代码的可读性,十分方便。
核心代码:
//定义传值的block,block的声明
typedef void(^returnBlock)(NSString *chooseColor);
//定义block属性
@property (nonatomic, copy) returnBlock returnBlock;
//block的调用
- (void)returnText:(returnBlock)block;
//block传值
if (self.returnBlock != nil) {
NSString *color = self.dataArray[indexPath.row];
self.returnBlock(color);
}
[needsVC returnText:^(NSString *chooseColor) {
NSString *keyString = _keyArray[indexPath.row];
[_getBackChooseDictionary setValue:chooseColor forKey:keyString];
//刷新tableView
[self.needsTV reloadData];
}];