需求:
在需要使用block传值的地方
实现方法:
场景一、在属性汇中使用
方法一:直接写
1.定义属性
@property(nonatomic,copy) void (^block)();
- 赋值
- (void)tapHead{
if (self.block) {
self.block();
}
}
3.使用过程
cell.block = ^{
};
方法二:使用typedef
1.定义别名
typedef void(^YYAddViewClick)();
2.定义属性
@property(nonatomic,copy) YYAddViewClick addViewClick;
3.赋值
- (void)newReipeReply{
if (self.addViewClick) {
self.addViewClick();
}
}
场景二:在方法中使用
1.定义方法
- (void)getMaintenanceRepairWith:(NSDictionary *)dic withBlock:(void(^)(id data, NSError *error))block
相关链接:iOS中Block的用法,举例,解析与底层原理(这可能是最详细的Block解析) - CocoaChina_一站式开发者成长社区这篇文章,首先在第1节中介绍Block的定义,以及与C里面函数的对比。然后,第2节介绍实际开发中经常会用到的Block语法形式,以供读者日后查阅。只知道怎么用却不知什么时候用?所以随后的第3节将介绍Block的应用场景。然而,用Block不当导致了Crash?所以,第4节有必要了解Block捕获变量的特性,以及循环引用的解决。另外,千万不要懒,一碰到Block就weak,要区分哪些不会引起循环引用。然而,如果对Block的内存机制不熟悉,也会导致Crash,所以第5节会介绍Block的内存机制。学到这里已http://www.cocoachina.com/articles/23147
作者:命运建筑师fly
链接:https://www.jianshu.com/p/ff8e0f6e8dc7
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。