KVO机制允许一个对象的指定属性的值改变时可以通知其它监听者。

这种机制在MVC程序构架中非常有用:

控制器监听模型的属性。如果控制器监听到模型中的属性变化了,那么控制器就通知视图更新显示。

一个模型对象也可以是其它模型对象的监听者,甚至一个对象也可以监听它自己的属性。

一个对象的属性可以被多个对象监听,当属性的值改变了,该属性所有的监听者都会收到通知。

使用KVO机制可以很方便的实现观察者模式。

使用KVO:

1. 假设如下情形:

@interface BankObject : NSObject {

}

@property(assign) NSIntger accountBalance;

@end

@interface PersonObject : NSObject {

}

accountBalance 的值发生变化时,一个 PersonObject 希然收到通知。

2. PersonObject 对象注册为 BankObject 对象的 accountBalance 属性的监听者。

[bankInstance addObserver:personInstance forKeyPath:@"accountBalance" options:NSKeyValueObservingOptionNew context:NULL];

3. 在 PersonObject 中响应通知

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

if ([keyPath isEqualToString:@"accountBalance"]) {

// TODO: Add your code here...

}

}

BankObjectaccountBalance 的值变化时, observeValueForKeyPath:ofObject:change:context:方法会自动被调用。

KVO(Key-Value observing)介绍相关推荐

  1. ON DUPLICATE key update的介绍与使用

    点赞再看,养成习惯,下面介绍ON DUPLICATE key update的使用. 目录 一.主键索引.唯一索引和普通索引的关系 二.实战操作 1.ON DUPLICATE key update使用介 ...

  2. iOS中有两种支持机制:Notification和KVO(Key-Value Observing)

    KVO是iOS中的一个核心概念,简单理解就是:关注Model某个数据(Key)的对象可以注册为监听器,一旦Model某个Key的Value发生变化,就会广播给所有的监听器(http://blog.ch ...

  3. jsonobject修改key的值_JSON字符串操作移除空串更改key/value的介绍

    对于JSON字符串的操作.移除键值.添加属性. //删除JSON对象value值 var json=[.....]; delete(json['key']); 或者 delete(json.key); ...

  4. 【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态

    一. Objective-C 方法详解 1. 方法属性 (1) OC 方法传参机制 Object-C 方法传参机制 : OC 中得参数传递都是值传递, 传入参数的是参数的副本; -- 基本类型 (值传 ...

  5. iOS开发入门——基础篇一

    文章目录 1. iOS应用生命周期 1.1 应用程序的架构 1.2 iOS应用的5种状态: 1.2.1做一些操作对应的生命周期调用的顺序 1.2.2全面的生命周期执行流程图 1.3 Main函数入口 ...

  6. 深度解析~iOS应用程序~生命周期

    摘要:iOS应用程序一般都是由自己编写的代码和系统框架组成,系统框架提供一些基本infrastructure给App来运行,而开发者则自己编写代码定制App的外观和行为,了解iOS Infrastru ...

  7. IOSday04 UIButton使用

    UIButton UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 千万不要这样写: btn.titleLabel.text ...

  8. iOS KVO和KVC介绍

    iOS KVO和KVC介绍 KVO和KVC都是基于对NSObject的扩展来实现的,所有继承于NSObject的子类都能使用KVO和KVC. 用来测试的model: @interface User : ...

  9. OC_KVC与KVO简单介绍

    KVC KVC概述 KVC 即 Key-value coding 键值编码,是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值. KVC案例 @interface ...

最新文章

  1. angularJs在线API文档
  2. 第十六届全国大学生智能车竞赛百度智慧交通竞赛成绩
  3. 【BZOJ-3156】防御准备 DP + 斜率优化
  4. 实验-网页动画(js版)
  5. 男女薪酬差异扩大 2018年女性薪酬不及男性8成
  6. 在windows下运行spark
  7. Eclipse中tomcat的简单配置
  8. 秋式开源团队,欢迎您的加入!
  9. 人脸识别测试维度定义(欢迎大家拍砖并补充谢谢!)
  10. c++开发工具下载地址
  11. Java区块链视频教程百度云_区块链开发入门到精通视频教程
  12. java项目超市购物管理系统
  13. LTE-V2X车联网技术、标准、应用
  14. Win10自动修复失败,无法正常启动
  15. Defender绝密档案:惊现中本聪?
  16. 百度云盘 破解上传限制4G(利用种子)
  17. web学习第七天:来自倔驴的怒吼——生理年龄不代表技术年龄
  18. 手风琴几排簧好_手风琴三排簧和四排簧的区别
  19. 【Docker】二 Docker安装
  20. 【厚积薄发系列】Python项目总结2—Python的闭包

热门文章

  1. [IPhone] 第一个iphone游戏(Bingo Fight)上市了
  2. 拜占庭将军问题(一)—— 引言与结论
  3. 一起学画图:散点图+边缘分布统计图形-密度图-直方图-箱型图-小提琴图
  4. java代码默认保存在哪里,java创建程序时程序保存在什么地方
  5. 如何不解锁BL刷入Android 12/安卓程序员预览版或者刷回Android 11
  6. 武汉第二中学2021年高考成绩查询,武汉市第二中学录取分数线及成绩2020
  7. GitHub云扫描器
  8. 乐学偶得python视频_怎么用历史估计法,ERP与CAPM模型计算股票资产的内在价值
  9. 【Linux】saltstack的使用详解 超详细
  10. 一致性hash环原理