delegate block 通知的区别
来源:互联网 发布:中国数据新闻大赛官网 编辑:程序博客网 时间:2024/04/25 22:16
delegate:
1,“一对一”,对同一个协议,一个对象只能设置一个代理delegate,所以单例对象就不能用代理;
2,代理更注重过程信息的传输:比如发起一个网络请求,可能想要知道此时请求是否已经开始、是否收到了数据、数据是否已经接受完成、数据接收失败.
block:
1:写法更简练,不需要写protocol、函数等等
2,block注重结果的传输:比如对于一个事件,只想知道成功或者失败,并不需要知道进行了多少或者额外的一些信息
3,block需要注意防止循环引用:
ARC下这样防止:
__weak typeof(self) weakSelf = self;
[yourBlock:^(NSArray *repeatedArray, NSArray *incompleteArray) {
[weakSelf doSomething];
}];
非ARC
__block typeof(self) weakSelf = self;
[yourBlock:^(NSArray *repeatedArray, NSArray *incompleteArray) {
[weakSelf doSomething];
}];
delegate运行成本低。block成本很高的。
block出栈需要将使用的数据从栈内存拷贝到堆内存,当然对象的话就是加计数,使用完或者block置nil后才消除;delegate只是保存了一个对象指针,直接回调,没有额外消耗。相对C的函数指针,只多做了一个查表动作
消息能实现一对多,使用场合较多,比如APPDelegate将推送消息发给多个ViewController,但是一定要注意,一旦接收消息的对象多了,就难以控制了,可能有你不希望的对象接受了消息并做了处理,另外一旦注册了观察者,在dealloc里面一定要移除;
- delegate block 通知的区别
- 通知、delegate和block的区别
- 代理delegate与通知Notification、block的使用区别
- delegate block 通知
- delegate 和 block 的区别
- block 与 delegate 的区别
- block 与 delegate 的区别
- block 与delegate 的区别
- 代理、通知、block的区别
- block和delegate的区别使用
- iOS中 block 代理 通知的区别
- 通知、代理以及block的区别
- block和代理,通知的区别
- KVO,NSNotification、Block、Delegate和KVO的区别
- iOS-Delegate-Block-NSNotification的区别和使用
- iOS中block和delegate的区别(面试必问)
- 代理<delegate>、通知<NSNotification>、KVO三者之间的区别
- IOS中消息的传递机制(delegate,block,通知,KVO)
- 装饰器模式(Decorator)
- 自定义控件进阶,如何用简单的写缤纷复杂的自定义控件
- 树状数组
- Codeforces Round #369 (Div. 2) C. Coloring Trees
- Java复习(1)—三大特性
- delegate block 通知的区别
- Spark MLlib(二)SVM
- 如何实施代码重构?
- Linux 桌面系统
- 1007 级数求和
- TCP/UDP相关知识总汇
- 结构体和类的字节对齐
- Android Studio快捷键的设置
- Picasso 设置 RelativeLayout, LinearLayout 等视图的背景图等的使用方式