一 . Notification
1.区别:
一对多
在APP中 , 很多控制器都需要知道一个事件 "应该用通知
2.用法:
Notification 通知中心
1.消息通知机制 顾名思义
在iOS开发中它就是通过消息,来达到通知的目的. 我们需要在通知中心注册我们想要监听的消息
- 当项目中有地方发出这个消息的时候 ,通知中心会发送给注册这个消息的对象
二. 代理
1.区别:
一对一
对同一个协议 , 一个对象只能设置一个代理 delegate , 所以单利对象就不能用代理
代理更注重过程信息的传输 ,比如: 发起一个网络请求,可能要知道此时请求是否已经开始 , 是否收到了数据 , 数据是否已经接收完成 , 数据接收失败
2.用法:
delegate 委托
委托其实是一种设计模式 , 通俗一点讲就是当自己有需求要处理但是不方便的时候 , 就建立一个委托, 请别人来帮忙处理
@protocol( 协议 )的代码吧 !如果我们要实现一个delegate委托 ,就先要先定义protocol( 协议 ),在指定收到回调的类中(也就是我 )去实现协议中的函数( 例如收短信 ),如果没有实现 ,编译器就会报警告 ;
下面是一个简单的例子
SecondviewController 会回调 FirstViewController ,FirstViewController 实现协议中的回调函数:
三. block 闭包
1.区别:
block 和 delegate 一样 , 一般都是 "一对一之间通信交互" , 相比代理block 有以下特点:
写法简练 , 不需要protocol 函数等等
block注重结果的传输: 比如对于一个事件,只想知道成功或者失败 , 并不需要知道进行了多少或者额外的一些信息
block 需要注意防止循环引用
2.用法:
block 是一种比较特殊的数据类型, 它可以用于两个界面之间传值, 也可以对代码封装作为参数传递 . block 常常结合typedef
来使用 , 用自己定义的类型去创建block 显得更加的简单便捷 .
网友评论