block和delegate的区别

代理  可读性高  大部分可以属性
block   写的代码少 一般作为参数
通知   占用资源

无论是block还是delegate模式本质上都是回调,使用block,其优点是回调的block代码块直接就放在了block赋值的地方,使代码更为紧凑,缺点是block内使用到当前类的实例变量的时候,需要注意循环引用的问题,即需要使用__block(MRC下)或者__weak(ARC下)定义一个弱引用的self出来,block里面使用弱引用的self去操作属性或调用方法。delegate模式不用像block一样做特殊处理,但是如果多个对象设置的代理是同一个对象,就需要在delegate方法中判断当前执行代理的是哪个对象。

时间: 2025-01-07 14:40:00

block和delegate的区别的相关文章

block和delegate 通知区别

通知:"一对多",在APP中,很多控制器都需要知道一个事件,应该用通知: delegate:1,"一对一",对同一个协议,一个对象只能设置一个代理delegate,所以单例对象就不能用代理:2,代理更注重过程信息的传输:比如发起一个网络请求,可能想要知道此时请求是否已经开始.是否收到了数据.数据是否已经接受完成.数据接收失败 block:1:写法更简练,不需要写protocol.函数等等2,block注重结果的传输:比如对于一个事件,只想知道成功或者失败,并不需要知

看到一篇写的关于block和delegate放在一起来方便大家理解的文章,感觉不错,就推荐给大家来看一下。

代理设计模式对于iOS开发的人来说肯定很熟悉了,代理delegate就是委托另一个对象来帮忙完成一件事情,为什么要委托别人来做呢,这其实是MVC设计模式中的模块分工问题,例如View对象它只负责显示界面,而不需要进行数据的管理,数据的管理和逻辑是Controller的责任,所以此时View就应该将这个功能委托给Controller去实现,当然你作为码农强行让View处理数据逻辑的任务,也不是不行,只是这就违背了MVC设计模式,项目小还好,随着功能的扩展,我们就会发现越写越难写:还有一种情况,就是

jQuery中的bind() live() delegate()之间区别分析

jQuery中的bind() live() delegate()之间区别分析 首先,你得要了解我们的事件冒泡(事件传播)的概念,我先看一张图 1.bind方式 $('a').bind('click',function (){ alert('click'); }) 解析:这种方式最简单,jq扫描文档找出所有的a,让将函数绑定到每个元素的click事件上 2.live方式 $('a').live('click',function (){ alert('click'); }) 解析:jq将函数绑定到$

display:inline、block、inline-block的区别 摘】

display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子. display:inline就是将元素显示为行内元素. inline元素的特点是: 和其他元素都在一行上: 高,行高及顶和底边距不可改变: 宽度就是它的文字或图片

【转】display:inline、block、inline-block的区别

转自:http://www.cnblogs.com/jdonson/archive/2011/06/10/2077932.html display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子. display:inline就

inline、block、inline-block的区别

我们用firbug浏览别人网站时会发现设计者会在很多地方使用inline-block.我们都知道inline是声明div是内联对象,block是声明块对象,那么inline-block是什么意思,即内联又成块?接下来做个测试,让我们了解一下三者的区别和作用吧: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" conten

米花读后感_开发选择Block还是Delegate

好好学习,天天向上. 阅读地址:http://www.cocoachina.com/ios/20150927/13525.html 如有侵权,请告知,马上删除. 黑色为摘抄片段,红色为自己的理解. 1.大多数delegate protocols 都拥有几个消息源.   例如:需要的block需要的参数不同,复用造成意义不明.   这个时候使用delegate比较合适. 其实通过定义多个block也能实现,并且多个block也能定义不同的名字.但是如果消息源实在太多的话,还是利用delegate更

[C#-2] delegate和Delegate的区别

问题:delegate和Delegate的区别 分析: 相信很多朋友开发过程中都遇到过上述疑问,为了解开这个疑问,最近查阅了不少帖子,最终在msdn的官方文档找到了答案. 下面是delegate和Delegate的官方文档链接地址 delegate:https://msdn.microsoft.com/zh-cn/library/ms173171.aspx Delegate:https://msdn.microsoft.com/zh-cn/library/system.delegate(v=vs

display:inline、block、inline-block的区别(摘抄)

display:inline.block.inline-block的区别 display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子. display:inline就是将元素显示为行内元素. inline元素的特点是: 和其