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

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

推荐阅读更多精彩内容