OC-KVO的应用
2015-09-17 19:03
519 查看
main.m
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Ibokan.h"
int main(int argc,
const char * argv[])
{
@autoreleasepool
{
//(1)KVO测试
Ibokan *ib=[Ibokan
new];
NSLog(@"%@",ib.frontDesk.someone);
//改变属性值,会自动调用observeValueForKeyPath
// [ib comein:@"daleng"];
}
return
0;
}
Person.h
#import <Foundation/Foundation.h>
@interface Person :
NSObject
@property (nonatomic,copy)
NSString *someone;
@end
Ibok.h
#import <Foundation/Foundation.h>
#import "Person.h"
@interface Ibokan :
NSObject
//前台妹妹
@property (nonatomic,strong)
Person *frontDesk;
//模拟进来一个人,改变所记录的名字
-(void)comein:(NSString *)name;
@end
Ibok.m
#import "Ibok.h"
@implementation Ibokan
- (instancetype)init
{
self = [super
init];
if (self) {
self.frontDesk= [
Person new];
self.frontDesk.someone=@"yang";
//1.注册订阅者
[self.frontDesk
addObserver:self
forKeyPath:@"someone"
options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld
context:nil];
}
return
self;
}
//2.处理属性改变
//一旦.someone改变,此方法就是调用
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary
*)change context:(void *)context
{
NSLog(@"==================");
NSLog(@"%@",change);
NSLog(@"新的值:%@",change[@"new"]);
NSLog(@"旧的值:%@",change[@"old"]);
if ([change[@"new"]isEqualToString:@"ladeng"])
{
NSLog(@"校长出来迎接");
}
}
-(void)comein:(NSString *)name
{
self.frontDesk.someone=name;
}
-(void)dealloc
{
[self.frontDesk
removeObserver:self
forKeyPath:@"someone"];
}
@end
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Ibokan.h"
int main(int argc,
const char * argv[])
{
@autoreleasepool
{
//(1)KVO测试
Ibokan *ib=[Ibokan
new];
NSLog(@"%@",ib.frontDesk.someone);
//改变属性值,会自动调用observeValueForKeyPath
// [ib comein:@"daleng"];
}
return
0;
}
Person.h
#import <Foundation/Foundation.h>
@interface Person :
NSObject
@property (nonatomic,copy)
NSString *someone;
@end
Ibok.h
#import <Foundation/Foundation.h>
#import "Person.h"
@interface Ibokan :
NSObject
//前台妹妹
@property (nonatomic,strong)
Person *frontDesk;
//模拟进来一个人,改变所记录的名字
-(void)comein:(NSString *)name;
@end
Ibok.m
#import "Ibok.h"
@implementation Ibokan
- (instancetype)init
{
self = [super
init];
if (self) {
self.frontDesk= [
Person new];
self.frontDesk.someone=@"yang";
//1.注册订阅者
[self.frontDesk
addObserver:self
forKeyPath:@"someone"
options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld
context:nil];
}
return
self;
}
//2.处理属性改变
//一旦.someone改变,此方法就是调用
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary
*)change context:(void *)context
{
NSLog(@"==================");
NSLog(@"%@",change);
NSLog(@"新的值:%@",change[@"new"]);
NSLog(@"旧的值:%@",change[@"old"]);
if ([change[@"new"]isEqualToString:@"ladeng"])
{
NSLog(@"校长出来迎接");
}
}
-(void)comein:(NSString *)name
{
self.frontDesk.someone=name;
}
-(void)dealloc
{
[self.frontDesk
removeObserver:self
forKeyPath:@"someone"];
}
@end
相关文章推荐
- Objective-C的内省(Introspection)用法小结
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
- Objective-C中NSLog输出格式大全
- Swift调用Objective-C编写的API实例
- Swift、Objective-C、Cocoa混合编程设置指南
- Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍
- Swift调用Objective-C代码
- 以实例讲解Objective-C中的KVO与KVC机制
- objective-c中生成随机数的方法
- 在Swift中使用Objective-C编写类、继承Objective-C类
- Swift能代替Objective-C吗?
- Objective-C 消息传递机制详解
- 在一个项目中同时使用Swift和Objective-C代码混合编程的方法
- vm安装mac os x 10.7 lion
- objective-c(一)
- objective-c(二)
- objective-c(三)
- objective-c(四)-基本数据类型以及循环和选择结构
- objective-c(六)文件分离,合成存取方法,方法多参数,局部变量,self使用(未完成)