美文网首页
block和delegate的优缺点、使用场景

block和delegate的优缺点、使用场景

作者: 宇轩Simid | 来源:发表于2019-05-07 19:35 被阅读0次

    block、delegate作用:

    1. 可回调传值
    2. 使两个类进行交互操作

    都可能出现的问题:
    都可能出现循环引用,block作为类的属性,被类对象强引用,blck内部又强引用self造成循环引用。
    delegate 的修饰属性写成strong和copy也是会造成循环引用,所以要使用weak或者assign

    但是相比较而言,delegate比blcok更安全,不容易出现循环引用问题。

    block优缺点:
    优点:

    1. 省去了很多delegate 的代码
    2. 轻量级,本质Oc对象,使用时不怎么定义零时变量,可以截获变量值,获取上下文,而且代码通常写在一个地方,看起来方便。
      缺点:
    3. 运行效率低,在开发中,需要把栈上的内容copy 到堆上一份,引用计数器会+1,啥时候为0后才会释放置为nil,
    4. block循环引用不安全
    5. 如果一个类要回调3个以上的方法的话,这样用blcok就比较繁琐,不易维护,代码不够美观。

    delegate优缺点:
    优点:

    1. delegate相较于blcok循环引用是比较安全的。
    2. delegate在一个类多种回调内容上,优势就很大了,继承一个协议,可以实现多种方法,在代码维护上也方便,方法分离也比较鲜明。
    3. delegate效率比blcok高,相当于一个方法的指针,不需要进行运行的消耗
      缺点:
    4. 方法声明,继承,实现不在一起,代码寻找比较麻烦,连贯性不好,不易读
    5. 很多时候是需要再次声明零时变量的

    相关文章

      网友评论

          本文标题:block和delegate的优缺点、使用场景

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