初识Objecive-C 之 键值观察(KVO)
来源:互联网 发布:知乎个性域名是什么 编辑:程序博客网 时间:2024/05/18 09:10
键值观察(KVO):Key-Value-Observing它基于键值编码的一种技术。利用键值观察可以注册成为一个对象的观察者,在该对象的某一个变化时收到通知。
编写键值观察三部曲:
- 注册成为观察者
- 观察者定义KVO的回调
- 移除观察者
#import<Foundation/Foundation.h>
@interface Child :NSObject
@property (assign)int happyVal;
@end
#import<Foundation/Foundation.h>
@classChild;
@interface Nurse :NSObject
@property (retain)Child *child;
- (id) initWithChild: (Child *)child;//被观察者
@end
-------------------------------------------------------------------#import<Foundation/Foundation.h>
@classChild;
@interface Nurse :NSObject
@property (retain)Child *child;
- (id) initWithChild: (Child *)child;//被观察者
@end
#import"Nurse.h"
#import"Child.h"
@implementation Nurse
//便利构造函数
-(id)initWithChild:(Child *)child{
if (self=[superinit]) {
self.child=child;
////注册观察者 对象是小孩 值的改变调用回调方法
[childaddObserver:self
forKeyPath:@"happyVal"//观察的属性happyVal
options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld//观察新值和旧值的变化
context:nil];
}
return self;
}
//观察者的回调方法
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
//输出change的值
NSLog(@"%@",change);
}
- (void)dealloc
{
//移除观察者观察的属性
[self.childremoveObserver:selfforKeyPath:@"happyVal"];
//释放观察者对象
[self.childrelease];
[superdealloc];
}
@end
#import<Foundation/Foundation.h>
#import"Nurse.h"
#import"Child.h"
int main(int argc,constchar * argv[])
{
@autoreleasepool {
Child *child = [[Childalloc]init];
Nurse *nurse = [[Nursealloc]initWithChild:child];
BOOL isTrue = YES;
while (isTrue) {
NSDate *dt = [NSDatedate];
[[NSRunLoopcurrentRunLoop]runUntilDate:[dtdateByAddingTimeInterval:20]];
isTrue=NO;
NSLog(@"监听结束");
}
}
return 0;
}
- 初识Objecive-C 之 键值观察(KVO)
- 初识Objecive-C 之 键值编码(KVC)
- 初识Objecive-C 之 属性
- 初识Objecive-C 之 继承
- 初识Objecive-C 之 NSString
- 初识Objecive-C 之 NSArray
- 初识Objecive-C 之 NSDictionary
- 初识Objecive-C 之 通知
- obj-c编程17:键值观察(KVO)
- 初识Objecive-C 之 面向对象(一)
- 初识Objecive-C 之 面向对象(二)
- 初识Objecive-C 之 self关键字
- 初识Objecive-C 之 内存管理
- 初识Objecive-C 之 类目、延展、协议
- 初识Objecive-C 之 单例模式
- 初识Objecive-C之 委托模式
- Objective-C学习-KVC(键值编码)和KVO(键值观察)
- KVO(键值观察)
- Linux kernel中module相关命令集
- mysql 优化 insert 性能
- 2013 无线传感器网络国际会议
- 指针p,*p,&p之间的区别
- 详细讲解二叉树三种遍历方式的递归与非递归实现
- 初识Objecive-C 之 键值观察(KVO)
- STM32系列芯片差别
- a sentence every day!
- OCP-1Z0-052-V8.02-185题
- C# 数据类型
- UCsocket 编程,简单聊天室实现
- 39,数据库(01)
- 【转载】计算广告学-搜索广告与广告网络Demand技术-流式计算平台
- 2014校园招聘总结