iOS开发7-KVO(Key-Value Observer)键值观察
来源:互联网 发布:桌面时钟显示软件 编辑:程序博客网 时间:2024/05/18 02:54
iOS开发7-KVO(Key-Value Observer)键值观察
代码下载(Xcode7.0.1)
KVO的全称是Key-Value Observer,即键值观察。是一种没有中心枢纽的观察者模式的实现方式。一个主题对象管理所有依赖于它的观察者对象,并且在自身状态发生改变的时候主动通知观察者对象。
1、注册观察者
Person.h/m#import <Foundation/Foundation.h>@interface Person : NSObject@property(nonatomic,strong)NSString *name;@end#import "Person.h"@implementation Person@end- (void)viewDidLoad { [super viewDidLoad]; self.p =[[Person alloc]init]; self.p.name=@"Sam"; //添加观察者 [self.p addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew| NSKeyValueObservingOptionOld context:@"NameCHange"];}
2、更改被观察对象属性的值,触发通知
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ self.p.name=@"Kate"; }
3、处理收到的通知
//处理收到的更改通知-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{ //响应观察者 NSLog(@"keyPath=%@",keyPath); //被观察的属性 NSLog(@"object=%@",object); //被观察的对象 NSLog(@"change=%@",change); //改变的值(新的、旧的) NSLog(@"context=%@",context); //添加观察者时的传值 /* 2015-10-22 19:38:48.651 [4479:351489] keyPath=name 2015-10-22 19:38:48.652 [4479:351489] object=<Person: 0x7f9130528cb0> 2015-10-22 19:38:48.652 [4479:351489] change={ kind = 1; new = Kate; old = Sam; } 2015-10-22 19:38:48.652 [4479:351489] context=NameCHange */ <pre name="code" class="objc"> //被观察的对象生命周期结束前移除观察者 //被观察的对象释放掉但观察者还在的话,程序会崩溃 [self.p removeObserver:self forKeyPath:@"name"]; NSLog(@"移除观察者");<span style="font-family: 'Helvetica Neue';"> </span>}4、注销观察者
//被观察的对象生命周期结束前移除观察者 //被观察的对象释放掉但观察者还在的话,程序会崩溃 [self.p removeObserver:self forKeyPath:@"name"]; NSLog(@"移除观察者");
代码下载(Xcode7.0.1)
2 0
- iOS开发7-KVO(Key-Value Observer)键值观察
- KVO (Key-Value Observing) 键值观察模式
- KVO (Key-Value Observing) 键值观察模式
- Key-Value-Observing(KVO,键值观察)
- KVO(Key-Value-Observer)键值观察者
- iOS学习笔记05—Key-Value-Observing(KVO,键值观察)
- 【IOS】KVC(Key - value coding 机制) & KVO(键值观察)
- ViewController之间通讯KVO(key value observing)键值观察模式
- 45.KVO(Key-Value-Observer)键值观察者
- iOS KVO 键值观察
- iOS疯狂讲解之KVO键值观察者(key- values-observer)
- KVO键值观察 Key-Value Observing自动发通知的方法
- 键值观察 Key-Value Observing Programming Guide
- 键值监视Key-Value Observing:KVO
- iOS键值观察KVO实例详解
- IOS Key-Value Observing (KVO)
- iOS设计模式之KVO Key-Value Observing 键值观察者模式的简单实用和介绍
- KVO(键值观察)
- 微信支付不再免费,浅谈它的四年发展史
- IOS网络笔记--多线程编程2(线程安全--同步锁)
- Spring的好处
- python内置函数大全
- 回编译异常
- iOS开发7-KVO(Key-Value Observer)键值观察
- iOS开发拓展篇—音乐的播放
- hdu 4781 Assignment For Princess(构造)
- iOS开发拓展篇—封装音频文件播放工具类
- MFC(三) 窗口创建机制编故事(下)
- 我也可以有CSDN博客
- Java语言基础(类型提升&强制转换)
- iOS开发拓展篇—CoreLocation简单介绍
- AFNetWorking的二次封装