zoukankan      html  css  js  c++  java
  • OC-KVO简介

    一,概述

    KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。

    二,使用:

    1.kVC即键值、编码 KVO即键值、观察者

    
        model的对象初始化self.modelA = [[Model alloc] init];
    
        //设置Model类里面的属性值  这部分就是KVC,键值编码。即对属性赋值
        [self.modelA setValue:@"xiaonan" forKey:@"name"];
        [self.modelA setValue:[NSNumber numberWithInt:20] forKey:@"num"];
        //设置观察者,键值观察是建立在键值编码的基础之上的。只要name属性赋值改变就会调用回调方法
        [self.modelA addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil];

    //KVO观察者的回调方法

    -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
    {
        if ([keyPath isEqualToString:@"name"]) {
            NSLog(@"%@",[self.modelA valueForKey:@"name"]);
        }
    }

    例如后来改变键值属性

    -(IBAction)buttonAction:(id)sender
    {
        [self.modelA setValue:@"you" forKey:@"name"];
    
    }

    就会触发观察者的回调方法

    然后在使用完这个方法的时候,我们需要注销这个观察者:

    [self.modelA removeObserver:self forKeyPath:@"name"];
  • 相关阅读:
    &【12】Python 函数
    &【11】Python 流程控制
    &【09】Python 数据类型之dictionary
    &【07】Python 数据类型之元组
    &【08】Python 数据类型之set
    &【06】Python 数据类型之list
    &【05】Python 彻底搞懂分片操作
    &【04】Python 数据结构之序列
    SpringBoot-HelloWorld(三)
    SpringBoot-了解微服务(二)
  • 原文地址:https://www.cnblogs.com/AbeDay/p/5026922.html
Copyright © 2011-2022 走看看