• KVO


    •基本概念

          Key Value Observing, 键值观察者。它提供一种机制,当指定的对象的属性被修改后,则对象就会接收到通知。

         与NSNotification不同,键值观察中并没有中心对象来为所有的观察者提供变化通知,取而代之,当有变化发生时,通知被直接发送至处于观察状态的对象。NSObject提供这种基础的键值观察实现方法

    KVO  注册观察者

          为了正确接收属性的变更通知,观察对象必须首先发送一个addObserver:forKeyPath:options:context:消息至被观察对象。用以传送观察对象和需要观察的属性的路径

          NSKeyValueObservingOptionOld选项可以将初始对象值,以变更字典中的一个项形式提供给观察者。指定NSKeyValueObservingOptionNew选项将新的值以一个项的形式添加到变更字典,可以采用”|”来指定接收上述两种类型的值

        [child addObserver:self forKeyPath:@”tired”          options:NSKeyValueObservingOptionOldNSKey|ValueObservingOptionNew

                 context:nil];

    KVO 接收变更通知

          当对象的一个被观察属性发生变动时,观察者收到一个observeValueForKeyPath:ofObject:change:context消息。所有观察者都必须实现这一方法oberveValueForKeyPath。

    -(void) :(NSString*)keyPath   ofObejct:(id)object    change:(NSDictionary *)change  context:(void *)c{

             if([keyPth isEqual:@”key”])  {

                         NSLog(@”%@”,change);

                 }

    }

    KVO 移除观察者身份 

    你可以发送一条指定观察方对象和建路径的removeObserver:forKeyPath:消息至被观察的对象,来移除一个键-值观察者(一般放在dealloc方法里面)

             [child removeObserver:self forKeyPath:@”key”];

    KVO 案例

    • 对象  孩子、护士
    •  护士需要对孩子的体温进行观察
    •  建立观察者模式,当孩子的体温发送变化时回调给护士进行处理

    1.  建立一个孩子模型

    2.建立一个护士模型

    (1)

      

     (2) 在.m文件里写

  • 相关阅读:
    变量定义方法
    动态编译
    函数
    过程
    触发器
    高级聚合函数rollup(),cube(),grouping sets()
    高级函数-decode
    高级函数-sign
    js 保留两位小数 javascript
    js 发红包
  • 原文地址:https://www.cnblogs.com/chenzq12/p/6214702.html
Copyright © 2020-2023  润新知