2018-03-01

为什么代理要用weak?

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

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

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

block和代理的区别?

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

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

代理的好处:

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

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

你可能感兴趣的:(2018-03-01)