iOS开发之KVO机制

定义Person类,设置属性name。并定义一个Teacher类,设置属性name,在Person设置teacher为属性.

#import

#import "Teacher.h"

@interface Person : NSObject

@property(nonatomic,copy)NSString  * name;

@property(nonatomic,retain)Teacher *teacher;

@end


#import

@interface Teacher : NSObject

@property(nonatomic,copy)NSString *name;

 

@end

//KVO:key - Value -Observer键值观察者。KVO是一种机制,不是设计模式,是基于观察者设计模式的一种机制。一个对象主动添加另一个对象为观察者,让观察者观察自己的属性有没有发生变化,如果发生了变化,观察者就会调用特定的方法

//   KVO的使用步骤:

//   1. 注册观察者

   person.name= @"zz";

//   下面方法的参数含义:

//obserVer:观察者

//   keyPath:观察哪一个属性

//   options:观察属性的什么状态,新值旧值还是初始值等

//   context:上下文,传值

   [person addObserver:self forKeyPath:@"teacher.name" options:(NSKeyValueObservingOptionOld |NSKeyValueObservingOptionNew) context:@"hh"];

 

    person.teacher.name = @"xx";


- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

   self.window =[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];


   Person* person = [[Personalloc]init];

   Teacher* teacher = [[Teacher alloc]init];

   person.teacher= teacher;

//KVO:key - Value -Observer键值观察者。KVO是一种机制,不是设计模式,是基于观察者设计模式的一种机制。一个对象主动添加另一个对象为观察者,让观察者观察自己的属性有没有发生变化,如果发生了变化,观察者就会调用特定的方法

//   KVO的使用步骤:

//   1. 注册观察者

   person.name= @"zz";

//   下面方法的参数含义:

//obserVer:观察者

//   keyPath:观察哪一个属性

//   options:观察属性的什么状态,新值旧值还是初始值等

//   context:上下文,传值

   [person addObserver:self forKeyPath:@"teacher.name" options:(NSKeyValueObservingOptionOld |NSKeyValueObservingOptionNew) context:@"hh"];

    person.teacher.name = @"xx";

   self.window.backgroundColor = [UIColor whiteColor];

   [self.window makeKeyAndVisible];

   returnYES;

 

}

//实现方法

- (void)observeValueForKeyPath:(NSString *)keyPathofObject:(id)objectchange:(NSDictionary *)change context:(void*)context

{

//   if (context == @"name") {

//      }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值