• 观察者模式(一对多)


    一、观察者模式简介

    在观察者模式中,一个对象的某个状态发生改变时,都会通知另外的对该改变感兴趣的对象。这些对象之间不需要知道彼此的存在,这其实是一种松耦合的设计。观察者注册自己感兴趣的对象的状态变更事件,当被观察者状态发生变化的时候,所有的观察者都会得到通知。

    二、Notifications

    NSNotificetioncCenter: 每个应用程序都有一个通知中心,用来协调不同对象之间的消息通信,一个完整的通知需要包含三要素:

    name:通知名字

    id:发布者

    userinfo通知携带的信息内容

     

    2.1、发布通知

        [[NSNotificationCenter defaultCenter]  postNotificationName:@"tzname" object:self userInfo:@{ @"title" : @"两会Duang开始了"}];

    2.2、监听通知

        监听通知一定要在发布通知之前,否则,会导致,一个通知已经发出了,但是漏监听了,当监听到一个通知的时候,可以读取这个通知的NSNotification报信息

        [[NSNotificationCenter defaultCenter] addObserver:listener selector:@selector(dowhat:) name:@"tzname1" object:sender1]

     

    2.3、移除监听(一般在dealloc中移除监听)

          当一个对象在销毁之前,必须先移除自己所有的监听,因为NSNotificationCenter不会理会对象是否存在,就会直接把通知传送过去,如果对象已经被销毁,但是监听依然存在,程序就会奔溃

        [[NSNotificationCenter defaultCenter] removeObserver:self] 

    三、KVO

    在ObjC中使用KVO操作常用的方法如下:

    • 注册指定Key路径的监听器: addObserver: forKeyPath: options:  context:
    • 删除指定Key路径的监听器: removeObserver: forKeyPathremoveObserver: forKeyPath: context:
    • 回调监听: observeValueForKeyPath: ofObject: change: context:

  • 相关阅读:
    springboot中jpa+lombok
    slf4j管理日志,info和error分开存储,每天一个日志文件
    redis内存策略
    redis持久化策略
    Json与对象之间的转化
    Json--01
    缓存中应注意的问题
    面试中的数据库如何优化?
    公司中服务器部署步骤
    Nginx故障迁移
  • 原文地址:https://www.cnblogs.com/hepingqingfeng/p/5462698.html
Copyright © 2020-2023  润新知