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"];
  • 相关阅读:
    spring mvc ajax请求
    spring mvc 返回页面数据
    spring mvc 参数传递的三种方式
    spring mvc 注解示例
    spring mvc handler的三种方式
    MyBatis 一级、二级缓存
    MyBatis 调用存储过程
    MyBatis动态SQL与模糊查询
    spring mvc 注解入门示例
    MyBatis 一对多关联查询
  • 原文地址:https://www.cnblogs.com/AbeDay/p/5026922.html
Copyright © 2011-2022 走看看