天天看点

KVC & KVO

        kvc和kvo看上去又是两个挺牛的单词简写,kvc是key-value coding的简写,是键值编码的意思。kvo是key-value  observing的简写,是键值观察的意思。那么我们能拿kvc和kvo干些什么事呢?这两个缩写单词不能否认听起来挺高端的样子。这两个方法都是runtime方法,我们先来介绍kvc。

        1.kvc(key-value coding)键值编码

            为了测试我们建立两个测试类

                  测试类一:

                测试类二:

            (1)我们可以用键值编码给对象的属性动态赋值(必须得有标准的getter和setter方法,或者用@property声明)

                我们可以调用setvalue: forkey: 方法以字符串的相识向对象发送消息,可以设置实例变量的值。第一个参数是要设置的值,第二个参数是实例变量的名称

                我们可以调用valueforkey: 来获取实例变量的值,废话少说,代码走起:

            代码运行结果:

            (2)我们可以通过键路径给实例变量是其他类的对象赋值 setvalue: forkeypath:

                代码如下: 接着上面的代码来得,kvc的一项实例变量是subkvcclass的对象

            上面代码的运行结果:

        kvc的基本内容概就这些吧,当然啦还有在数组中使用kvc以及kvc中的运算-集合等,不做赘述啦。

    2.介绍完kvc那么我们来介绍一下kvo,键值观察

        键值观察是个什么东西啊?他有什么用啊?怎么用?从字面意思上说键值观察就是观察属性值的变化,也是运行时的方法,当实例变量改变时,系统会自动采取一些动作。

        kvo使用三步走:

             (1)注册成为观察者

             (2)观察者定义kvo的回调

             (3)移除观察者

        来点实际的,还得上代码:

        kvoclass接口:

       kvoclass实现

    ​代码说明:注册观察者的时候调用addobserver方法,第一个参数是观察那个类,第二个参数是那个类中的那个属性,第三个方法是观察选项,第四个会传到下面的观察方法中

    ​  上面的代码运行结果为: