【iOS】键值编码KVC和键值观察KVO

键值编码KeyValveCoding

KVC是一种在NSKeyValueCoding协议下使用一个唯一的字符串(key)来访问对象属性(value)的机制。KVC可以暴力访问对象的任意变量,包括private类型。NSObject类继承了该协议,所以NSObject的子类都可使用该方法。

使用方法如下

1、先声明一个继承于NSObject的Student类和Major类

Student类的私有变量有name、age、gender。属性有grade、score、major

Major类的私有变量有majorName。

【iOS】键值编码KVC和键值观察KVO_第1张图片
Student类


【iOS】键值编码KVC和键值观察KVO_第2张图片
Major类

2、通过KVC设置Stufent对象的值,强行设置private变量

【iOS】键值编码KVC和键值观察KVO_第3张图片
需要声明@property (nonatomic,strong) Student *student;

3、通过KVC读取Student对象的值,强行输出private变量的值

打印数据


键值观察KeyValveObserve

KVO是基于KVC实现的一种监听机制,当被观察者的值发生变化时会通知观察者,触发observeValueForKeyPath方法。

在Student和Major类的基础上,为major.majorNamer添加观察者。


为major.majorNamer添加观察者。


【iOS】键值编码KVC和键值观察KVO_第4张图片
当majorName发生变化时会触发此方法。

你可能感兴趣的:(【iOS】键值编码KVC和键值观察KVO)