OC_键值编码KVC(Key-Value Coding)

来源:互联网 发布:淘宝的淘友能看到什么 编辑:程序博客网 时间:2024/06/03 03:33

-(void)viewDidLoad{
[super viewDidLoad];
/*
设计模式 – 观察者模式
设计模式是用来解决某一特定问题

观察者模式
什么是观察者模式?
在工程中,一些类去观察‘A’类,当‘A’类发生变化时,这些类就会收到消息,做出相应反应。

什么时候使用观察者模式?
当一个类需要发送消息给多个类的时候,就用观察者模式。

观察者模式的作用?
一对多的消息放送

在OC中如何实现观察者模式?
OC中观察者模式的设计基础 KVC/KVO

KVC (键值编码 Key-Value Coding)
KVC提供了在运行时而非编译时动态访问对象属性与实例变量的方式。

*/


Student *stu1 = [Student new];

[stu1 setValue:@”Leee” forKey:@”_name”];
[stu1 setValue:@25 forKey:@”age”];
[stu1 setValue:@”GZ” forKey:@”_address”];

NSLog(@”%@”,stu1);

//访问

NSString *name = [stu1 valueForKey:@”_name”];
NSNumber *age = [stu1 valueForKey:@”_age”];
NSString *address=[stu1 valueForKey:@”_address”];

//动态访问某些属性时,使用一些可以运行时而不是编译时改变的值

stu1.p1 = 1;
stu1.p2 = 2;
stu1.p3 = 3;
int a= [stu1 getValuePropertyName:@”p1”];
NSLog(@”%d”,a);

int b = [stu1 getNewValuePropertyName:@”p1”];
NSLog(@”%d”,b);

Book *book = [Book new];

// [book setValue:(nullable id) forKey:(non null NSString *)]

//键路径编码
[stu1 setValue:book forKeyPath:@”_book”];
[stu1 setValue:@”少妇白洁” forKeyPath:@”_book.bookName”];
NSString *bookName = [stu1 valueForKeyPath:@”_book.bookName”];
NSLog(@”%@”,bookName);

}

0 0
原创粉丝点击