block 与delegate( weak/id)

下面我们来说说delegate为啥定义时要用weak修饰符,这个涉及到循环引用的问题。例如一个ViewController上通过强指针引用了一个tableview,tableview的datasource和delegate都必须是weak指针,因为viewController被他两指向,如果用strong的话,就会形成强引用循环。

时间: 2024-12-24 07:39:45

block 与delegate( weak/id)的相关文章

[IOS Block和delegate的对比]

原文:http://blog.sina.com.cn/s/blog_9e8867eb0102uykn.html 这篇文章建议和前一篇一起看, 另外先弄清楚IOS的block是神马东东. 委托和block是IOS上实现回调的两种机制.Block基本可以代替委托的功能,而且实现起来比较简洁,比较推荐能用block的地方不要用委托. 本篇的demo和前一篇是同一个,可以到github上下载不同的版本, 源码下载地址: https://github.com/pony-maggie/DelegateDem

block和delegate的使用

/** *  功能: *  1. 分别通过delegate和block方式实现,点击TestTableViewCell上添加的按钮push到一个指定的控制器(TestViewController) *  2. 当点击cell上的按钮的时候,传一个值(当前cell的row)给ViewController控制器 *  3. 当ViewController控制器收到Cell传来的值之后,再返回一个值给TestTabelViewCell,从而达到回调目的 */ ViewController.m // /

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

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

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

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

block和delegate的区别

代理  可读性高  大部分可以属性 block   写的代码少 一般作为参数通知   占用资源 无论是block还是delegate模式本质上都是回调,使用block,其优点是回调的block代码块直接就放在了block赋值的地方,使代码更为紧凑,缺点是block内使用到当前类的实例变量的时候,需要注意循环引用的问题,即需要使用__block(MRC下)或者__weak(ARC下)定义一个弱引用的self出来,block里面使用弱引用的self去操作属性或调用方法.delegate模式不用像bl

Block代替delegate,尽量使用block,对于有大量的delegate方法才考虑使用protocol实现.

Block代替delegate,尽量使用block,对于有大量的delegate方法才考虑使用protocol实现. 1.Block语法总结及示例如下:         //1.普通代码块方式block     returnType (^blockName)(parameterTypes) = ^returnType(parameters) {         // block code     };     使用未例:     int (^abc)(int a) = ^int(int a){

block和delegate的选择

block和delegate均为常用回调方式 (暂不讨论通知) 代理 优点: 设置某个对象的代理,代理对象可以与被代理对象不直接相关,即使两个对象距离较远,传值也比较方便. 代理方法内可以方便调用对象私有方法 缺点: delegate比block使用繁琐,对于多个小控件的回调,delegate要写更多的代码. delegate中一个方法处理一个逻辑,更清晰.多协议比多block更容易维护业务. block 优点: 调用简介易于使用 缺点: block不宜多层嵌套,代码糅合在一起不易理解. blo

block和delegate 通知区别

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

iOS边练边学--Segue数据逆传(用block代替delegate)

一.block与方法的异同点: 相同点是都是保存代码段,什么时候执行,什么时候调用 不同点是block不受类或者对象的约束:方法收到了类或者对象的约束 二.思路:(通讯录练习) 在联系人控制器中,添加完联系人或者修改完后保存联系人的时候需要刷新联系人控制器的tableView 但是,联系人控制器中不能确定刷新tableView的时机 解决办法:在联系人控制器中定义好对应控制器的block代码段,block执行的时机由block的拥有者来指定 三.代码实现: