zoukankan      html  css  js  c++  java
  • KVC和KVO

    一 KVC

        KVC:键-值编码是一种间接访问对象的属性使用字符串来标示属性,而不是通过调用存取方法,

                直接或通过实例变量访问的机制。

        基本调用包括setValue:forKey和valueForKey:两个方法:

        setValue:forKey:方法以字符串的形式向对象发送消息,可以设置对象实例变量的值。第一参数为要设置的值

                     ,第二个参数为字符串,是对象的属性名称或者实例变量名称。

        valueForKey:方法以字符串的方式向对象发送消息,用于获取对象中实例变量的值。参数为字符串,是对象的

                          属性名称或者实例变量名称。

        案例:

         //新建一个学生类

        //在Student.h文件中

       

        //在Student.m文件中

        

        //main函数

        

        结果:

         

        接下类我们来看键路径

        使用setValue:forKeyPath:和valueForKeyPath:方法来访问键路径。

        案例:

        //声明一个Teacher类

        

         

          

           

            

           结果:

              

           总结:键值编码支持指定键路径,对于对象中实例变量或属性是另外一对象的情况非常实用。

    二 KVO

        KVO:键值观察是基于键值编码(KVC)的一种技术,利用键值观察可以注册成为一个对象的观察者,在该对象

                 的某个属性变化时收到通知。

        编写键值观察分为三步:

         1.注册成为观察者;

         2.观察者定义KVO的回调;

         3.移除观察者;

         案例:

         //在Student.h文件中

        

          //在Student.m文件中

       //实现方法

       

          //在main函数中

      结果:

       

     注意:谁成为了监听者,监听方法就写在那个类文件中;

         案例:

         让Teacher类成为监听者

         在Teacher.h文件中

         

         在Teacher.m文件中

        

      在main函数中

      

      结果:

       

    总结:

         [obj addObserver:self

               forKeyPath:@"memberVariable"

               options:(NSKeyValueObservingOptionOld|

                            NSKeyValueObservingOptionNew)  

                context:nil];  

        第一个参数:常为self,接收通知的对象,即观察者。

        第二个参数:键路径参数,要观察的键路径。

        第三个参数:标识KVO希望变化如何传递给观察者,这些值可以使用“|”进行多选。

        第四个参数:上下文内存区,通常为nil。

  • 相关阅读:
    台州 OJ 3847 Mowing the Lawn 线性DP 单调队列
    洛谷 OJ P1417 烹调方案 01背包
    快速幂取模
    台州 OJ 2649 More is better 并查集
    UVa 1640
    UVa 11971
    UVa 10900
    UVa 11346
    UVa 10288
    UVa 1639
  • 原文地址:https://www.cnblogs.com/taopengcun/p/3687212.html
Copyright © 2011-2022 走看看