• QF——iOS通知中心(NotificationCener)


      前面我们讲iOS不同界面间传值的时候,说过可以通过通知中心进行传值。那到底什么是通知中心,他是如何实现传值的呢?

      NSNotificationCenter是单例的,只提供了一个唯一的实例化入口,在整个应用内只存在一个实例 :

        [NSNotificationCenter defaultCenter]

      只要“关注”NSNotificationCenter的实例,就可以自动接收其他对象通过通知中心发的消息。因为它的关注者可以有很多个,所以它也就有了广播性质。

      在通知中心里,消息发送者和接收者一无所知,完全解耦,这是极好的。

      通知中心的本质是观察者模式,给某对象(NSNotificationCenter)注册观察,只要它发生了变化,就会触发回调方法。

    使用通知中心的步骤:假设要从A传值到B

      1.B先关注通知中心,也可以说给通知中心注册观察者B:

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

      2.A通过通知中心发送消息:

          [[NSNotificationCenter defaultCenter] postNotificationName:@"newURL" object:nil userInfo:@{@"newSiteURL":value}];

        3.因为B关注了通知中心,当通知中心有消息时,会触发回调方法,所以执行 - (void)urlChange:(NSNotification *)notification

        注:NSNotification 是消息信息的携带体,通过notification.userInfo可以获得通知中心里的通知信息。

     

        4.移除观察者:

         重写析构函数dealloc,在里面移除观察者(对通知中心取消关注)

         [[NSNotificationCenter defaultCenter] removeObserver:self];

        

  • 相关阅读:
    LaTeX插入数学公式
    清除浮动的4种方式
    水平居中与垂直居中
    如何实现两三栏布局
    BFC
    flex弹性盒子
    盒模型
    Git
    jQuery设置disabled属性与移除disabled属性
    TP---where多条件查询
  • 原文地址:https://www.cnblogs.com/wangerxiansheng/p/4444120.html
Copyright © 2020-2023  润新知