OC中的KVC和KVO(二)
来源:互联网 发布:ssd nvme ubuntu 分区 编辑:程序博客网 时间:2024/04/30 02:19
观察者模式中的基础包括:KVC以及KVO
KVO的由来:
在编码的过程中,经常需要判断目标是否发生变化,以便及时地做出对应的处理。此时,苹果公司就提供了一种策略,即‘OC运行时’提供了‘KVO’技术。其中‘KVO’时基于KVC实现的。
KVO的实现包括:注册成为观察者、观察者定义KVO回调、移除观察者。
1.注册观察者(定义一个Hero类)
//Observer-(id)initWithHero:(Hero *)hero{ if(self = [super init]){ self.hero = hero; [self.hero addObserver:self forKeyPath:@"_HP" options:NSKeyValueObserverOptionNew context:nil]; } return self;}
addObserver:表示接受通知的对象,即观察者,通常为self;
forKeyPath:键路径参数,要观察的键路径;
options:表示KVO希望变化如何传递给观察者,这些值可以使用“|”进行多选;
context:上下文内存区通常为nil。
2.定义KVO回调
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{//输出改变后的值NSLog(@"%@",[change objectForKey:NSKeyValueChangeNewKey]);}
3.移除观察者
-(void)dealloc{[self.hero removeObserver:self forKeyPath:@"_HP"];}
主函数里面的实现
//使用KVC进行设值[hero setValue:@100 forKey:@"_HP"];//初始化hero观察者Observer *ober = [[Observer alloc] initWithHero:hero];
当_HP的值改变时,将会在控制台输出改变后的值,而在整个程序中,只有在Observer.m文件中设置了NSLog输出函数。
0 0
- OC中的KVC和KVO(二)
- OC中的KVC和KVO(一)
- OC中的KVC和KVO
- OC中的KVC和KVO
- OC中的KVC与KVO
- oc的kvc和kvo
- OC学习:KVC和KVO
- ios中的KVC和KVO
- iOS中的KVC和KVO
- OC的KVC和KVO机制
- OC学习日记11-KVC和KVO
- 《OC——KVC和KVO》
- OC-KVC/KVO
- oc中kvc kvo
- OC-KVC/KVO
- 设计模式之观察者模式(关于OC中的KVO\KVC\NSNotification)
- Objective-C中的KVC和KVO
- iOS中的KVC和KVO的理解
- 怎么预防空调病呢?
- TestNG的IMethodInterceptor监听器详解
- Android判断view是否部分被遮挡(或者移出屏幕)的方法
- JavaWEB——文件上传与下载
- zzulioj 1912: 小火山的爱情密码
- OC中的KVC和KVO(二)
- 初识Pyspark 1
- 什么是脚本(Script)
- 漫步线性代数二——线性方程的几何形状
- web组件之间的跳转
- 115.[LeetCode] Min Stack
- Spring整合mybatis简单配置
- Web应用程序路径
- PHP文件上传