banner

帮助中心 > 新闻资讯 >Swift中Notification,代理,通知,block的区别与用法

Swift中Notification,代理,通知,block的区别与用法

发布时间:2019-01-10

一 . Notification

1.区别:

一对多
在APP中 , 很多控制器都需要知道一个事件 "应该用通知

2.用法:
Notification 通知中心

1.消息通知机制 顾名思义
在iOS开发中它就是通过消息,来达到通知的目的. 我们需要在通知中心注册我们想要监听的消息

  1. 当项目中有地方发出这个消息的时候 ,通知中心会发送给注册这个消息的对象

二. 代理

1.区别:

一对一
对同一个协议 , 一个对象只能设置一个代理 delegate , 所以单利对象就不能用代理
代理更注重过程信息的传输 ,比如: 发起一个网络请求,可能要知道此时请求是否已经开始 , 是否收到了数据 , 数据是否已经接收完成 , 数据接收失败

2.用法:
delegate 委托

委托其实是一种设计模式 , 通俗一点讲就是当自己有需求要处理但是不方便的时候 , 就建立一个委托, 请别人来帮忙处理

@protocol( 协议 )的代码吧 !如果我们要实现一个delegate委托 ,就先要先定义protocol( 协议 ),在指定收到回调的类中(也就是我 )去实现协议中的函数( 例如收短信 ),如果没有实现 ,编译器就会报警告 ;

下面是一个简单的例子
SecondviewController 会回调 FirstViewController ,FirstViewController 实现协议中的回调函数:

三. block 闭包

1.区别:

block 和 delegate 一样 , 一般都是 "一对一之间通信交互" , 相比代理block 有以下特点:
写法简练 , 不需要protocol 函数等等
block注重结果的传输: 比如对于一个事件,只想知道成功或者失败 , 并不需要知道进行了多少或者额外的一些信息
block 需要注意防止循环引用

2.用法:

block 是一种比较特殊的数据类型, 它可以用于两个界面之间传值, 也可以对代码封装作为参数传递 . block 常常结合typedef来使用 , 用自己定义的类型去创建block 显得更加的简单便捷 .

这是我的一个技术交流群:691040931有兴趣的话可以加入 群里只聊技术 内推 广告忽进 进一次踢一次

相关推荐