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。

  • 相关阅读:
    Invalid bound statement (not found)解决方法
    MySQL的sum()函数
    关于Mybatis的java.lang.UnsupportedOperationException异常处理
    博客迁移
    Building Blog(个性化博客)2
    走一波服务器
    JZ高中OJ 1036. [SCOI2009]迷路
    JZ初中OJ 2296. [noip普及组2]神殿
    JZ初中OJ 2295. [noip普及组2]栈
    JZ初中OJ 2298. [noip普及组2]异或
  • 原文地址:https://www.cnblogs.com/taopengcun/p/3687212.html
Copyright © 2011-2022 走看看