ios27--kvo

简介:
复制代码
//
//  ViewController.h
//  14-KVO的使用

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController


@end
复制代码
复制代码
//
//  ViewController.m
//  14-KVO的使用
//
/*
   KVO: Key Value Observing (键值监听)--->当某个对象的属性值发生改变的时候(用KVO监听)
 */

#import "ViewController.h"
#import "XMGPerson.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
 
    XMGPerson *person = [[XMGPerson alloc] init];
    person.name = @"zs";
    
    XMGPerson *person1 = [[XMGPerson alloc] init];
    person.name = @"zs";
    /*
     作用:给对象绑定一个监听器(观察者)
     - Observer 观察者
     - KeyPath 要监听的属性
     - options 选项(方法方法中拿到属性值,拿到新值和旧值)
     */
    [person addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
    
    
    person.name = @"ls";
    
    person1.name = @"ls";
    
    person.name = @"ww";
    

    
    // 移除监听
    [person removeObserver:self forKeyPath:@"name"];//移除哪个对象的哪个属性的监听
}

/**
 *  当监听的属性值发生改变
 *
 *  @param keyPath 要改变的属性
 *  @param object  要改变的属性所属的对象
 *  @param change  改变的内容
 *  @param context 上下文
 */
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{
    NSLog(@"%@------%@------%@------%@", keyPath, object, change,context);
    /*
     name------<XMGPerson: 0x6080000102d0>------{kind = 1;new = ls;old = zs;}------(null)
     */
}

@end
复制代码
复制代码
//
//  XMGPerson.h
//  14-KVO的使用

#import <Foundation/Foundation.h>

@interface XMGPerson : NSObject

/** 姓名 */
@property (nonatomic, copy) NSString *name; //string用copy

@end
复制代码
复制代码
//
//  XMGPerson.m
//  14-KVO的使用

#import "XMGPerson.h"

@implementation XMGPerson

@end
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/7486376.html,如需转载请自行联系原作者

相关文章
|
存储 iOS开发
iOS Principle:KVO(下)
iOS Principle:KVO(下)
132 0
iOS Principle:KVO(下)
|
存储 C语言 iOS开发
iOS Principle:KVO(上)
iOS Principle:KVO(上)
140 0
iOS Principle:KVO(上)
|
Android开发 iOS开发
iOS开发:KVC与KVO
KVC 就是键值编码(key-value-coding),可以直接访问对象的属性,或者给对象的属性赋值。黑魔法之一,很多高级的iOS开发技巧都是基于KVC实现的。 KVO 是键值观察者(key-value-observing)。实现方式:通过对某个对象的某个属性添加观察者,当该属性改变,就会调用”observeValueForKeyPath:”方法,为我们提供一个“对象值改变了!”的时机进行一些操作。
237 0
iOS开发:KVC与KVO
|
编译器 iOS开发
iOS-底层原理 23:KVO 底层原理
iOS-底层原理 23:KVO 底层原理
197 0
iOS-底层原理 23:KVO 底层原理
|
安全 iOS开发
iOS探索 -- KVO 的原理分析
KVO (key-value-observing) 是一种 键值观察 机制, 它允许当前对象去观察目标对象的某个属性的变化; 当被观察对象的属性发生变化后, 会通过特定方法通知观察者对象属性变化的一些情况内容, 观察者对象拿到变化情况后做出相关操作。
179 0
|
监控 iOS开发
IOS开发-KVO
观察者,观察对象属性的变化,当被观察者该属性发生变化时,观察者会接收到通知,可以在回调函数中做相应的处理
|
Java iOS开发
【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态(二)
【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态(二)
130 0
|
存储 安全 C语言
【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态(一)
【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态(一)
189 0
|
iOS开发
IOS学习笔记八(KVO)
IOS学习笔记八(KVO)
102 0
|
定位技术 iOS开发
iOS中KVC与KVO的应用解析
iOS中KVC与KVO的应用解析
144 0