美文网首页程序员iOS学习开发iOS开发技术分享
Swift中Notification,代理,通知,block的区

Swift中Notification,代理,通知,block的区

作者: iOS雯Ping | 来源:发表于2018-12-13 18:13 被阅读8次

    一 . 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有兴趣的话可以加入 群里只聊技术 内推 广告忽进 进一次踢一次

    相关文章

      网友评论

        本文标题:Swift中Notification,代理,通知,block的区

        本文链接:https://www.haomeiwen.com/subject/qybbhqtx.html