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。

  • 相关阅读:
    [精华] Linux内存:内存管理的实质
    阿里巴巴笔试题
    LINUX内核经典面试题(转)
    常见网络编程面试题答案征集与面试题(收集)
    转使用jQuery Ajax的内存回收
    模式识别与机器学习
    vc2010 学习笔记2
    vc2010 学习笔记3
    Android高级编程(笔记)第6章 数据存储、检索和共享—3SQLite数据库
    Android高级编程(笔记)第6章 数据存储、检索和共享1共享Preference
  • 原文地址:https://www.cnblogs.com/taopengcun/p/3687212.html
Copyright © 2011-2022 走看看