博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
消息通知中心
阅读量:5268 次
发布时间:2019-06-14

本文共 1062 字,大约阅读时间需要 3 分钟。

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

需要注意的是,发布与订阅有时间先后,如果发布时没有监听,则将无法监听到消息.所以订阅消息要尽早,最好在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];

 

转载于:https://www.cnblogs.com/PaulpauL/p/4935252.html

你可能感兴趣的文章
【SVM】libsvm-python
查看>>
Jmeter接口压力测试,Java.net.BindException: Address already in use: connect
查看>>
Leetcode Balanced Binary Tree
查看>>
go:channel(未完)
查看>>
[JS]递归对象或数组
查看>>
多线程《三》进程与线程的区别
查看>>
linux sed命令
查看>>
html标签的嵌套规则
查看>>
[Source] Machine Learning Gathering/Surveys
查看>>
HTML <select> 标签
查看>>
tju 1782. The jackpot
查看>>
湖南多校对抗赛(2015.03.28) H SG Value
查看>>
hdu1255扫描线计算覆盖两次面积
查看>>
hdu1565 用搜索代替枚举找可能状态或者轮廓线解(较优),参考poj2411
查看>>
bzoj3224 splay板子
查看>>
程序存储问题
查看>>
Mac版OBS设置详解
查看>>
优雅地书写回调——Promise
查看>>
android主流开源库
查看>>
AX 2009 Grid控件下多选行
查看>>