iOS KVO模式简解
来源:互联网 发布:空调换热器设计软件 编辑:程序博客网 时间:2024/04/26 04:46
KVO模式 - 什么是KVO?
KVO是Key-Value Observing的简称,翻译成中文就是键值观察
实现机制为,为可能改变的数据增加一个观察者,在上面的说法中这个观察者就是controller,它去观察这个数据有没有发生变化,一旦发生变化,就会得到一个信号
**实现步骤:**
第一步:设置键值对即–K–V–
第二步:为controller添加观察者,用于观察键值对变化
第三步:延迟一秒执行,改变age
第四步:延迟两秒,移除观察
第五步:延迟三秒,改变age,看看是否移除了观察
//// ViewController.m// KVODemo//// Created by 冯士魁 on 2017/2/19.// Copyright © 2017年 xoxo_x. All rights reserved.//#import "ViewController.h"#import "People.h"@interface ViewController ()@property (nonatomic,strong)People *MJ;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; self.MJ = [[People alloc]init]; self.MJ.name = @"MJ"; self.MJ.age = 26; //设置键值对即--K--V-- [self.MJ setValue:self.MJ.name forKey:@"name"]; [self.MJ setValue:[NSString stringWithFormat:@"%d",self.MJ.age] forKey:@"age"]; //为controller添加观察者,用于观察键值对变化 [self.MJ addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil]; [self.MJ addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew context:nil];//延迟一秒执行,改变age;[self performSelector:@selector(changeMJAge) withObject:nil afterDelay:1];//延迟两秒,移除观察 [self performSelector:@selector(removeAgeObserver) withObject:nil afterDelay:2];//延迟三秒,改变age,看看是否移除了观察 [self performSelector:@selector(changeMJAge) withObject:nil afterDelay:3];}- (void)changeMJAge{ NSLog(@"%d",self.MJ.age); self.MJ.age += 1;}//当受到观察的键值对改变时--进行下面- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ if ([keyPath isEqual: @"age"]) { NSLog(@"我的年龄发生了变化"); } else { [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; }}@end
日志如下:
2017-02-19 21:55:19.648 KVODemo[35964:872611] 262017-02-19 21:55:19.649 KVODemo[35964:872611] 我的年龄发生了变化2017-02-19 21:55:20.714 KVODemo[35964:872611] removeAgeObserver2017-02-19 21:55:21.698 KVODemo[35964:872611] 27
Demo地址:https://git.coding.net/Xoxo_x/KVODemo.git
0 0
- iOS KVO模式简解
- iOS KVO模式
- ios里的KVO模式
- ios里的KVO模式
- iOS设计模式 - KVO
- ios里的KVO模式
- IOS 中的KVO模式 观察者模式
- ios学习--KVO模式关键函数
- iOS KVO 观察者模式实现方式
- iOS的观察者模式之:KVC&KVO
- IOS观察者模式之KVO代码
- ios中的kvo模式使用实例
- iOS 观察者模式(KVC&KVO、通知)
- [ios基础] KVO观察者模式,实用分析
- iOS 中的观察者模式, KVO, 通知
- IOS-KVC,KVO与MVC设计模式
- iOS KVC和KVO开发模式
- iOS之KVO模式的相关内容
- AlexNet笔记
- 笔记:根据类名获取元素的问题
- 22.栈的压入和弹出序列
- jsp的九大内置对象
- 集合
- iOS KVO模式简解
- POJ3694 Network 割边 LCA
- UVA - 514
- LeetCode - 28. Implement strStr()
- POJ 3409 Broken line 英文少
- 雾效果
- SpringMVC 学习总结(一)
- 一起Talk Android吧(第三回:Java中的变量类型)
- Oracle配置多个监听