oc 语法 kvo
来源:互联网 发布:算法基础打开算法之门 编辑:程序博客网 时间:2024/05/16 08:53
点名主题 :
kvo就是一个类来监听另外一个类的变量,当变量发生改变的时候来通知这个类。
举个例子:
创建一个人的类,人的类中有一个银行卡;创建一个银行卡的类,银行卡的类中有一个钱的变量;
我们来用人的类来监听银行卡中的钱数,当银行卡中的钱数发生改变的时候来通知人;
下面我们来实现这个例子;
新建一个
创建一个person类
person.h
#import <Foundation/Foundation.h>@class BankCard;@interface Person : NSObject{ BankCard *bancard;//银行卡}@end
person.m
#import "Person.h"#import "BankCard.h"@implementation Person//重写初始化函数-(id) init{ self = [super init]; if(self) { bancard = [[BankCard alloc]init]; //添加一个监听 监听的变量为 bancard 中得money的变量 旧的值和新的值 [bancard addObserver:self forKeyPath:@"money" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:NULL]; } return self;}//当监听的值发生改变的时候自动调用该方法-(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ if([keyPath isEqual:@"money"]) { NSString *new = [change objectForKey:@"old"]; NSString *old =[change objectForKey:@"new"]; NSLog(@"%@ %@",new,old); }}@end
银行卡类:
BankCard.h
#import <Foundation/Foundation.h>@interface BankCard : NSObject@property (nonatomic,assign) float money;@endBankCard.m
#import "BankCard.h"@implementation BankCard-(id)init{ self = [super init]; if(self) { _money=10.0f; //这里用了定时器,看不懂没关系,知道意思就行,就是每隔1秒调用一下balanceUpdate这个函数来改变money的值,以便我们来观察是否监听成功; [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(balanceUpdate) userInfo:nil repeats:YES]; } return self;}-(void) balanceUpdate{ float f = self.money; f += arc4random()%100;//产生一个0-99 的随机数 self.money = f;}@end
main.m
#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]){ @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); Person *p = [[Person alloc]init]; [[NSRunLoop currentRunLoop]run]; } return 0;}
运行结果:
2014-07-25 21:51:32.210 IOS KVO[3388:303] Hello, World!2014-07-25 21:51:33.214 IOS KVO[3388:303] 10 932014-07-25 21:51:34.213 IOS KVO[3388:303] 93 1542014-07-25 21:51:35.214 IOS KVO[3388:303] 154 1822014-07-25 21:51:36.213 IOS KVO[3388:303] 182 2142014-07-25 21:51:37.213 IOS KVO[3388:303] 214 3072014-07-25 21:51:38.213 IOS KVO[3388:303] 307 3582014-07-25 21:51:39.213 IOS KVO[3388:303] 358 4042014-07-25 21:51:40.213 IOS KVO[3388:303] 404 4932014-07-25 21:51:41.213 IOS KVO[3388:303] 493 542Program ended with exit code: -1
参考自千锋视频。
3 0
- oc 语法 kvo
- OC语法之KVC与KVO
- OC KVO
- OC-KVO
- OC-KVO
- OC-KVO
- OC - KVO
- OC KVO
- OC高级语法之KVC和KVO的学习
- OC学习之KVO
- OC-KVC/KVO
- oc中kvc kvo
- OC之KVO
- OC键值监听(KVO)
- OC-KVO的应用
- OC中的KVO
- oc语言kvo
- oc——KVO
- glViewport()函数和glOrtho()函数的理解
- JVM原理
- input输入格式转换插件-Vanilla Masker
- iOS开发——加载、滑动翻阅大量图片解决方案详解
- 屌丝程序员赚钱之道 之投资续
- oc 语法 kvo
- Construct Binary Tree from Inorder and Postorder Traversal
- 分页过程中SQL使用了 id in()方法
- Unity3D游戏开发软件
- lightoj 1201 树形dp
- Oracle 语法之 OVER (PARTITION BY ..) 及开窗函数
- 与机房收费系统的再一次相处(.NET版):
- C++ 输入输出函数学习总结
- 梅巫蹲蹲涂牙锌疾忻链叹油攘炼渭