您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页5.1 NSNotification(通知机制) - 斯坦福 i

5.1 NSNotification(通知机制) - 斯坦福 i

来源:二三四教育网

MVC中的广播站机制,常用于控制器(Control)和模型(Model)之间的的盲通信.

如何收听广播?


  • 1.创建单例

      //返回一个类似于 NSUserDefault 的共享实例(单例),就用这个对象来收听广播
      [NSNotificationCenter defaultCenter] 
    
  • 2.调用单例方法

      /*
      使用"通知"进入监听系统广播
      Observer(id)observer: 想要收听广播的对象(一般都是 self )
      selector(SEL)methodToInvokeIfSomethingHappens: 收到通知后要调用的方法
      name(NSString *)name: 你要收听的广播站
      object(id)sender: 是否想只收听某个特定对象发出的广播
      */
          [[NSNotificationCenter defaultCenter] addObserver:self
                                           selector:@selector(preferredFontsChanged:)
                                               name:UIContentSizeCategoryDidChangeNotification
                                             object:nil];
    
  • 3.创建收到通知后,要响应的方法

      - (void)preferredFontsChanged:(NSNotification *)notification{
    
      /*
      notification对象有三个属性:
      notification.name: 广播站名称
      notification.object: 向你发送这个通知的对象(就是 addObserver 方法中的 sender)
      notification.userInfo: 是一个 ID 取决于广播站
      */
    
          [self usePreferredFonts];
      }
    
  • 4.在 view 将要退出显示的时候要,停用一些服务和操作,减少 CUP 占用(包括移除通知)

      - (void)viewWillDisappear:(BOOL)animated{
    
          [super viewWillDisappear:animated];
    
          //移除监听, 用于控制内存
          [[NSNotificationCenter defaultCenter] removeObserver:self
                                                  name:UIContentSizeCategoryDidChangeNotification
                                                object:nil];
    }
    
  • 5.最后在 dealloc 中移除通知(但是不建议使用)

    //最后的保险做法
    - (void)dealloc{
    
        [[NSNotificationCenter defaultCenter] removeObserver:self];
    }

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务