博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
KVO的简单使用
阅读量:5012 次
发布时间:2019-06-12

本文共 923 字,大约阅读时间需要 3 分钟。

一、KVO:(Key-Value-Observer)键值观察者,是观察者设计模式的⼀种具体实现。

     触发机制:⼀个对象(观察者),监测另⼀对象(被观察者)的某属性是否发⽣变 化,若被监测的属性发⽣的更改,会触发观察者的⼀个⽅法(⽅法名固定,类似代理⽅法)

     使⽤步骤: 1、注册观察者(为被观察者指定观察者以及被观察属性) 2、实现回调⽅法 3、触发回调⽅法(被观察属性发⽣更改) 4、移除观察者


二、使用细解

  拿自建的一个Person类来说

    Person *person = [[Person alloc] init];

    [person addObserver:self forKeyPath:@"person.name" options:( NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew) context:nil];

     四个参数:

           observer :观察者

           keyPath :观察哪个属性

           options :观察属性的状态,新旧值还是初始值

           context :上下文,用来传值的,如果不需要传值,可置为nil

 

 

下面的方法是添加了观察者,属性发生变化时自己调用的方法,不能手动调用。

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{

    NSLog(@"%@ %@ %@ %@", keyPath, object, change, context);

    // 移除观察者

    [object removeObserver:self forKeyPath:keyPath context:context];

 

}

 参数含义:

   keyPath 所观察的属性

  object  别观察者

  change  一个字典,内部包含了属性不同状态下的值

  context 上下文,从外界传数据过来

 

     

 

转载于:https://www.cnblogs.com/qiushifalife/p/4802981.html

你可能感兴趣的文章
leetcode : Count and Say [基本功]
查看>>
洛谷 P2485 [SDOI2011]计算器 解题报告
查看>>
c#访问存储过程
查看>>
Slickflow.NET 开源工作流引擎基础介绍(三) -- 基于HTML5/Bootstrap的Web流程设计器
查看>>
Node教程
查看>>
java将字段映射成另一个字段,关于 接口传参 字段不对应转换
查看>>
Redis
查看>>
字段和属性的区别
查看>>
HTTP(一)工作机制
查看>>
条形码扫描枪数据读取的问题
查看>>
$this->autoRender = false
查看>>
健壮的 Java 基准测试
查看>>
phpstorm查看类的继承关系
查看>>
git create clone(仓库)
查看>>
chmod修改文件权限的命令
查看>>
新博客牵至简书
查看>>
矩阵求逆
查看>>
在 Windows 8、Windows 10 桌面模式下的 .NET Framework 程序中,引用 Windows.Runtime 的 API。...
查看>>
2015 8月24号 工作计划与实行
查看>>
MVC AJAX
查看>>