2019独角兽企业重金招聘Python工程师标准>>>

优点:

  • 回调的block代码块定义在委托对象函数内部,使代码更为紧凑
  • 被委托对象不再需要实现具体某个protocol,代码更为简洁

缺点:

  • delegate运行成本低,block成本很高。block出栈需要将使用的数据从栈内存拷贝到堆内存,当然对象的话就是加计数,使用完或者block置nil后才消除;delegate只是保存了一个对象指针,直接回调,没有额外消耗
  • 如果在block里面使用了self,容易导致循环引用问题,要用weak

转载于:https://my.oschina.net/jlongtian/blog/842514

block相对于delegate有哪些优缺点?相关推荐

  1. block的用法以及block和delegate的比较(转发)

    看到一篇写的关于block和delegate放在一起来方便大家理解的文章,感觉不错,就推荐给大家来看一下. 代理设计模式对于iOS开发的人来说肯定很熟悉了,代理delegate就是委托另一个对象来帮忙 ...

  2. block为什么用copy以及如何解决循环引用

    在完成项目期间,不可避免的会使用到block,因为block有着比delegate和notification可读性更高,而且看起来代码也会很简洁.于是在目前的项目中大量的使用block. 之前给大家介 ...

  3. 关于Block的copy和循环引用的问题

    http://blog.csdn.net/felix9/article/details/9619313 在实际开发中,发现使用Block有着比delegate和notification更简洁的优势.于 ...

  4. iOS 面试之Block

    转自:http://blog.csdn.net/xunyn/article/details/11658261 1 什么是block 对于闭包(block),有很多定义,其中闭包就是能够读取其它函数内部 ...

  5. IOS多线程之Block编程

    1 什么是block iOS SDK 4.0開始,Apple引入了block这一特性.字面上说,block就是一个代码块.可是它的奇妙之处在于在内联(inline)运行的时候(这和C++非常像)还能够 ...

  6. objective-c block 旧版详解

    Block Apple 在C, Objective-C, C++加上Block這個延申用法.目前只有Mac 10.6 和iOS 4有支援.Block是由一堆可執行的程式組成,也可以稱做沒有名字的Fun ...

  7. objective-c block 讲解

    objective-c block 讲解 Block Apple 在C, Objective-C, C++加上Block這個延申用法.目前只有Mac 10.6 和iOS 4有支援.Block是由一堆可 ...

  8. 5G工业路由器与4G无线路由器各自有何优缺点

    5G的出现给予了物联网更多的可能,工业自动化.人工智能.智慧城市等一系列应用,有了更强大的5G以后,都将迎来广阔的应用空间.工业级路由器是物联网最常用的数据采集无线设备,因为其成熟的技术.规范的协议. ...

  9. delegate 用法

    Delegate是一种应用composite来代替extend的机制,可以有效地降低代码的耦合性. Rails 2.2增加了delegate方法,可以十分方便地实现delegate机制.来看看源码吧: ...

最新文章

  1. OpenCV+python:膨胀和腐蚀
  2. 使用 Python 的图像隐写术
  3. formal method online checking tool
  4. easyui中的datagrid的数据加载的问题
  5. “2021ISIG中国产业智能大会低代码峰会”即将开幕,钉钉宜搭叶周全受邀出席
  6. 如何把一个运行完好的Kafka搞崩溃
  7. C/C++报错:全局变量重定义或是多次定义
  8. 足球点球 html5,身为西甲第一点球手,C罗只有5次让点经历,难怪点球破门过百...
  9. 致力推广 Vim 的那个程序员走了,Vim 之父:我要把 9.0 版献给他
  10. 21天Jmeter打卡Day21生成HTML测试报告
  11. HDU 2895 贪心 还是 大水题
  12. 风力摆?这是不是太简单了点
  13. 期货交易品种基本面分析(期货品种技术面分析)
  14. 机器学习常用小代码块
  15. 专业英语---短语篇
  16. k8s部署prometheus + grafana
  17. FPGA Implementation of BPSK Modulator and Demodulator
  18. cpld与单片机通信教程-并口和spi
  19. 为什么要使用二级指针?
  20. 基于RocketMQ设计秒杀

热门文章

  1. max os取消开机启动
  2. .NET Remoting 入门实例
  3. [zz]如何使用effect
  4. 借用 FCKEditor 的文件上传/管理界面
  5. BSTR与CString之前的转换
  6. 字体渲染 渲染引擎
  7. C++_类和对象_对象特性_成员变量占用对象内存_成员函数_静态成员函数_静态变量_都不占用对象内存_他们是分开存储的---C++语言工作笔记048
  8. IntelliJ Idea工作笔记009---代码没有错,但是在IDEA报错的原因
  9. 微信小程序开发学习笔记002--微信小程序框架解密
  10. 学计算机的用哪种笔记本写字,平面设计笔记本电脑,学平面设计用什么电脑好...