美文网首页
2018-03-01

2018-03-01

作者: AmyQin | 来源:发表于2018-03-02 09:45 被阅读0次

    为什么代理要用weak?

    答:因为使用weak是弱引用,外部可以释放对象。指明该对象并不负责保持delegate这个对象,delegate这个对象的销毁由外部控制。如果使用strong对象保持delegate对象造成循环引用,对象无法释放内存泄漏。

    代理的delegate和dataSource有什么区别?

    delegate偏重于用户交互的回掉。dataSource偏重于数据的回调。

    block和代理的区别?

    “代理和block的共同特性是回调机制,不同的是,代理的方法比较多,比较分散。

    使用block的代码比较集中统一。”

    代理的好处:

    delegate运行成本低。block成本很高的。

    block出栈需要将使用的数据从栈内存拷贝到堆内存,当然对象的话就是加计数,使用完或者block置nil后才消除;delegate只是保存了一个对象指针,直接回调,没有额外消耗。相对C的函数指针,只多做了一个查表动作

    相关文章

      网友评论

          本文标题:2018-03-01

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