zoukankan      html  css  js  c++  java
  • iOS 通知的使用

    学习通知,我们要掌握:通知的发布 , 通知的监听 , 通知的移除

    在通知里面,有一个非常重要的东西: 通知中心(NSNotificationCenter);

    每一个应用程序,都有一个通知中心,专门用来处理不同对象之间的消息通信。这个通知中心是在程序开启的时候创建的,在程序关闭的时候销毁的。

    任何对象都可以向通知中心发布通知(NSNotification),其他对象可以向通知中心申请 当特定的对象向通知中心发布通知时, 要收到这个通知。

    从上图中可以看出,通知发布者是向通知中心发布通知,通知中心向接收者传递通知。所以,通知中心是很重要的

    用一个例子来解释:微信中的公众号,当我们关注某个公众号的时候,我们就会受到这个公众号发布的消息。如果我们不关注某个公众号,就不会接收到公众号的消息;这就好比,通知接收者必须告诉通知中心,我要接收某个特定的对象发布的通知,这个时候,当该对象向通知中心发布通知时,通知中心就会向通知接收者传递通知。所以,我们关注的公众号发布的信息是发布给腾讯,然后腾讯会去检测哪个用户关注了这个公众号,就会向关注该公众号的用户发送消息。这个里面腾讯就相当于通知中心。发布公众号的那些企业就是通知发布者,而用户就是通知接收者。

    下面来写一个通知的应用的例子:创建一个人类,创建一个新闻类,新闻对象向通知中心发布通知,人对象来接收通知

    首先创建两个类,设置name属性

    接下来实现,新闻对象发布通知,人类对象接收通知;

    然后,创建一个通知

    通知类有3个属性,我们通过类方法实例化一个通知对象

    通知对象创建完成了,要创建一个通知中心,由通知中心来发布通知

    接下来,由通知中心发布通知

    现在已经完成了通知的发布,注册一个监听者,也就是通知的接收者

    在人类中创建一个show方法

    通知中心发布通知了,监听者也有了,运行程序

    真是尴尬,只打印了一句话,也就说明show方法没有执行,也就是隔壁老王没有接收到通知。。。是不是我写错了。。。。。请看官继续往下看

    看一下上面代码的思路:首先创建通知对象,创建通知中心,由通知中心发布通知对象,但是这个时候是没有对象来监听这个通知的,当通知发布结束了

    才有隔壁老王来监听这个通知,这个时候通知都结束发布了,你监听也没用了,所以。注册监听要在通知发布之前,所以,修改一下代码的顺序就可以了

    这个时候老王虽然监听到了消息,但是不知道消息是什么内容。所以想得到通知的具体内容,在监听方法中要添加参数。添加参数要注意,监听方法可以没有参数,如果有参数,就只能有一个参数,就是通知对象(NSNotification)

    此时打印结果:

    如果想获取字典的具体内容,可以这样写

    这个时候大家不要以为这样写一个通知就结束了。当接收通知的通知接收者对象被销毁了。这个时候,通知中心仍然有指针指向这个地址,虽然对象被销毁,但是通知中心不知道你这个对象被销毁了,仍然会继续给这个地址发送通知。如果这时通知中心指向的这个地址是个空的还好,不会发生相应。如果这个时候这个地址指向的是一个新的对象,当通知中心发送通知的时候,会调用接收到通知以后的方法,这个新的对象肯定不会有(show:)方法,这个时候就会导致错误

    所以,当通知接收对象被销毁的时候,一定要再通知中心移除,告诉通知中心不要再给我发送通知了

    对象的销毁肯定会调用自己的dealloc方法

    通知的流程就结束了。 

  • 相关阅读:
    [学习记录]Prometheus简单上手
    [学习记录]从triggerflow源码中学到的简单思想
    42 | 实战:大型全球化电商的测试基础架构设计
    41 | 从小工到专家:聊聊测试执行环境的架构设计(下)
    40 | 从小工到专家:聊聊测试执行环境的架构设计(上)
    39 | 从小作坊到工厂:什么是Selenium Grid?如何搭建Selenium Grid?
    python之jsonpath
    38 | 测试数据的“银弹”- 统一测试数据平台(下)
    Python replace()方法
    37 | 测试数据的“银弹”- 统一测试数据平台(上)
  • 原文地址:https://www.cnblogs.com/xiaobai51/p/5571509.html
Copyright © 2011-2022 走看看