• 消息通知中心


    消息通知中心的原理就是广播与收听的原理;广播站负责发出广播,有人收把收音机一直开着调到某个频段,一旦有广播,那么就可以收到.当然这个广播不是由广播中心产生的,而是有人把要广播的消息交给了广播中心,由广播中心转发.这里的消息中心也是同样的功能,有对象发布消息,也有对象订阅消息,消息有唯一的消息名称来区分;这种方式也很好的实现了界面之间的传值,此处的值以字典的形式放入参数进行传递.

    需要注意的是,发布与订阅有时间先后,如果发布时没有监听,则将无法监听到消息.所以订阅消息要尽早,最好在AppDelegate里就订阅,通过调用对象方法来订阅.

    AppDelegate:

    ViewController2 *vc2=[[ViewController2 alloc]init];

        //使vc2成为观察者

        [vc2 becomeObserver];

    ViewController2:

    -(void)becomeObserver

    {

        //在消息通知中心订阅了一条名为"dataChange"的消息,当消息发出时,会通知,self调用selector中的方法响应,object一般为nil,表示收到所有这个名字的消息

        [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(updateUI:) name:@"dataChange" object:nil];

    }

    当数据发生变化时需要将此消息发布出去(如果对象关心此消息,就需要提前订阅)

    去消息通知中心发送消息,第1个参数是消息的名称,第2个参数是发送消息的对象

    发布消息但是不传数据时

    [[NSNotificationCenter defaultCenter] postNotificationName:@"dataChange" object:nil];

    NSDictionary *dict=[NSDictionary dictionaryWithObjectsAndKeys:@"qianfeng",@"name", nil];

    发布消息的同时传递数据,将需要传递的数据封装成一个字典

    [[NSNotificationCenter defaultCenter] postNotificationName:@"dataChange" object:nil userInfo:dict];

    http://www.cnblogs.com/PaulpauL/ 版权声明:本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    Qt学习之系列[9] – QCoreApplication:processEvents()可能会引起递归,导致栈溢出崩溃
    Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法:
    获取输入设备的vid和pid
    QProcess 进程类—调用外部程序
    Q_INVOKABLE与invokeMethod用法全解
    QML插件扩展2(基于C++的插件扩展)
    leetcode第一刷_Word Search
    设计模式之抽象工厂模式
    Python Random随机数
    【X240 QQ视频对方听不到声音】解决方法
  • 原文地址:https://www.cnblogs.com/PaulpauL/p/4935252.html
Copyright © 2020-2023  润新知