2018-03-01

为什么代理要用weak?

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

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

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

block和代理的区别?

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

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

代理的好处:

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础 1. 为什么说Objective-C是一门动态的语言? 2. 讲一下MVC和MVVM,MVP? 3. 为...
    波妞和酱豆子阅读 3,355评论 0 46
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 5,252评论 1 23
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,209评论 30 471
  • 文/非灼 一个动漫电影火遍全球是很了不起的事情,但是没有一个人能预料,《千与千寻》会持续很长时间受关注。2002年...
    非灼阅读 4,597评论 118 166
  • 我梦到我落在荒漠上,黄沙滚滚。一匹马儿向我疾驰而来,堪堪停在我眼前,不停地打着响鼻。想要安抚他,伸手,大片大片的黄...
    鱼刺S阅读 87评论 0 0