一 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。

 

 

posted on 2014-04-25 10:13  APPstop  阅读(962)  评论(0编辑  收藏  举报