美文网首页
2018-07-30 Block和Closure 作为类的属性(

2018-07-30 Block和Closure 作为类的属性(

作者: 北你妹的风 | 来源:发表于2018-07-31 09:18 被阅读7次

    先说在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作为类的属性:

    var  closureMethod : ((_ param:ParamType)->(ReturnType))?

    格式为 : var closure : (()->())?    依次是闭包属性的名字,参数类型,返回值类型  ,问号代表该变量暂未赋值,是可选类型

    使用:

    1、public   var    menuClick :((_index:Int)->(Void))?    

    2、 if let closure = menuClick {

                closure(index)

            }

    3、在其他类中,  xxx.menuClick = {(index) in 

        doSomething()

    }

    个人感觉Block(Closure)要比代理delegate好用,用于传值,回调,耦合性低,易于理解,使用方便

    相关文章

      网友评论

          本文标题:2018-07-30 Block和Closure 作为类的属性(

          本文链接:https://www.haomeiwen.com/subject/izlcvftx.html