美文网首页iOS、swift技术交流!
NSNotificationCenter的使用

NSNotificationCenter的使用

作者: 光明程辉 | 来源:发表于2016-01-21 11:11 被阅读114次

使用场景:反向传值 和 换皮肤、键盘。

  • 通知是一对 多的!代理是一对一的!

  • 先监听

  • 后接收

  • 监听: (这里的例子是使用 键盘name:UIKeyboardWillShowNotification)
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewUp) name:UIKeyboardWillShowNotification object:nil];

  • // object : 传一个参数 ,userInfo :传多个参数(是字典来的)

  • 后接收:
    [[NSNotificationCenter defaultCenter]postNotificationName:@"test" object:@"我是通知的参数" userInfo:@{@"1":@"one"}];

  • 打印测试:
    -(void)test:(NSNotification *)sender{

    NSLog(@"%@",sender.object); //  object : 传一个参数
    NSLog(@"%@",sender.userInfo); // userInfo :传多个参数
    NSLog(@"自定义的通知");
    }
    

疑惑:为什么先监听?后发送通知?

  • 下面用3个页面说明:A、B、C页面,在 B 页面添加一个 发送通知 和一个 监听消息! A、C 分别添加一个 监听消息!(此时,A、B、C中都有一个监听方法!就是一监听到通知就做出颜色改变!)
  • 测试结果是:(只有A 和 B 才能改变!)
A和B界面才有改变.png
  • 因为 通知是在 B 发送的!A 在 B 的前面,所以,可以监听的到! C 在 B之后,代码执行不到,所以就不能 接收到通知!(好比一个广播 在 8:00 ~8:30开播,A 在 8:00 之前就打开广播了,那么就可以收到消息,而C 在 8:30 后才打开 广播,那么就不会接收到广播了);

相关文章

网友评论

    本文标题:NSNotificationCenter的使用

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