iOS开发之NSNotification

NSNotification:一个对象能够给其他任意数量的对象广播信息。对象之间可以没有耦合关系。

上一次,我们分享了有关 KVO 的内容,但 KVO 只是一对一的关系,如果要用到一对多的关系的时候,该怎么办呢?这个时候就可以用到NSNotification(通知)

1、NSNotification 的基本知识

相关类:
1、NSNotification(通知):封装了要广播的信息。
2、NSNotificationCenter(通知中心):管理注册接收消息对象,广播消息。
3、observer(观察者):需要监测广播信息的对象,即接收信息的对象。

2、NSNotification 的基本用法

下面举一个例子,来说明NSNotification的用法:
创建两个UIViewController:
在 viewController_01.m 中:

- (void)viewDidLoad {
    [super viewDidLoad];
    //  接收信息对象在通知中心注册,包括:信息名称、接收信息时的处理方法
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeTheme:) name:@"change" object:nil];
}

    //  实现注册的方法
- (void)changeTheme:(NSNotification *)sender {
    self.view.backgroundColor = sender.userInfo[@"color"];
}

在 viewController_02.m 中:

- (void)viewDidLoad {
    [super viewDidLoad];
    //  接收信息对象在通知中心注册,包括:信息名称、接收信息时的处理方法
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeTheme:) name:@"change" object:nil];
}

    //  实现注册的方法
- (void)changeTheme:(NSNotification *)sender {
    self.view.backgroundColor = sender.userInfo[@"color"];
}

在 viewController_03.m 中:

//  创建 viewController_03.m 的 Button 对应的方法
- (IBAction)changedColor:(UIButton *)sender {
    //  给已注册对象,发送消息,这里是一键修改背景颜色
    [[NSNotificationCenter defaultCenter] postNotificationName:@"change" object:nil userInfo:@{@"color": [UIColor lightGrayColor]}];
}

** 点击viewController_03里的button,viewcontroller_01和viewController_02的backgroundColor就会改变**

通过NSNotification,可以很容易的完成一对多的消息发送!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,216评论 30 472
  • 原文链接http://www.cnblogs.com/kenshincui/p/4186022.html 音频在i...
    Hyman0819阅读 21,810评论 4 74
  • OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装、继承、多态。它既具有静态语言的特性...
    克鲁德李阅读 458评论 0 0
  • OC的理解与特性OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装、继承、多态。它既具有静态语言的特性(...
    LIANMING_LI阅读 535评论 0 0
  • 文丨月方 陈老师上课回来,和我分享他的上课视频,我认真看了一下,觉得陈老师进步真是不小,无论思想举止还是言谈,都已...
    月方阅读 488评论 2 0