2018-07-30|2018-07-30 Block和Closure 作为类的属性(变量)
先说在OC中,Block作为类的属性:
@property(nonatomic,copy) void(^MyBlock)(NSString*name);
格式为 returnType (^blockName)(ParamType * param1,ParamType *param2 ...)
使用:
1、if (self.blockName){
self.blockName(param1,param2)
}
2、在其他类中,xxxx.blockName = ^(param1,param2){
doSomething()
}
注意:Block作为属性,声明时要使用copy,以及避免循环引用
在Swift中,Closure作为类的属性:
varclosureMethod : ((_ param:ParamType)->(ReturnType))?
格式为 : var closure : (()->())?依次是闭包属性的名字,参数类型,返回值类型,问号代表该变量暂未赋值,是可选类型
使用:
1、publicvarmenuClick :((_index:Int)->(Void))?
2、 if let closure = menuClick {
closure(index)
}
3、在其他类中,xxx.menuClick = {(index) in
doSomething()
}
【2018-07-30|2018-07-30 Block和Closure 作为类的属性(变量)】个人感觉Block(Closure)要比代理delegate好用,用于传值,回调,耦合性低,易于理解,使用方便
推荐阅读
- 急于表达——往往欲速则不达
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- 樱花雨
- 前任
- 2020-04-07vue中Axios的封装和API接口的管理
- 烦恼和幸福