iOS:KVO的简单使用及其本质
来源:互联网 发布:2k18詹姆斯身体数据 编辑:程序博客网 时间:2024/06/07 07:26
KVO全称Key-Value Observer. 是观察者设计模式的一种实际应用.
KVO的操作对象是对象.
简单使用:
现在创建一个Person类,Person类中有一个age属性,当点击按钮的时候改变age属性的值
#import "ViewController.h"#import "Person.h"@interface ViewController ()@property(nonatomic,strong)Person *person;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; self.person = [[Person alloc]init]; self.person.age = @12; //为person添加观察者 同时监听新值和旧值 [self.person addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];}//按钮点击- (IBAction)btnClick { self.person.age = @18;}//keyPath:监听的值 object:被观察的对象 change:包含新值和旧值- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{ NSLog(@"监听的值是:%@---被观察的对象是:%@---改变:%@",keyPath,object,change);}//移除观察者- (void)dealloc{ [self.person removeObserver:self forKeyPath:@"age"];}@end
输出结果:
KVO的本质:
如果我们用正常的方法监听一个对象的新值与旧值会采取下面的方法
在回调方法处打一个断点我们会发现被观察对象Person有一个NSKVONotifying_Person子类
其实KVO的本质就是在程序运行的过程之中,动态的产生一个被监听对象的子类,在这个子类之中重写被监听属性的set方法同时调用[super setXXX]方法,以实现对被监听对象属性的监听.
0 0
- iOS:KVO的简单使用及其本质
- ios KVO的简单使用
- iOS KVC与KVO的简单使用
- KVO的简单使用
- KVO的简单使用
- KVO的简单使用
- 引用的使用及其本质
- iOS中KVO的使用
- ios KVC KVO的使用
- 【ios】iOS:KVO的概述与使用
- 通知,代理,KVO的简单使用
- 关于swift中KVO的简单使用
- iOS:KVO的概述与使用
- iOS:KVO的概述与使用
- [ios开发基础之]KVO的使用
- IOS开发之----KVO的使用
- iOS:KVO/KVC 的概述与使用
- iOS:KVO的概述与使用
- c++string类
- js实现瀑布流布局
- 快速排序
- Flask Web 开发 Flask script 扩展功能 Manager
- Scala学习第十二弹 数组
- iOS:KVO的简单使用及其本质
- 区块链开发(二)部署和运行第一个以太坊智能合约
- Java(a)--Java基础程序设计
- Maven基础与私服搭建
- JavaScript DOM 编程艺术 第八章 例子分析
- 指针学习笔记2
- 原生JS获取内嵌,外部css样式,使用style只能直接获取内联style的属性值
- JS中call、apply、bind使用指南
- Scala进阶之App特质