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。

  • 相关阅读:
    传统目标检测主要结构原理讲解(去除了冗余的知识)
    redis部署,linux下秒级定时监控服务脚本
    第一个脚本部署案例,比较简单,还有redis的部署脚本没有写完
    fabric-sdk-go client开发
    fabric-sdk-go ca开发
    fabric-sdk-go config详解
    pkg/client/msp msp包
    pkg/client/resmgmt resmgmt包
    pkg/client/ledger ledger包
    pkg/client/event event包
  • 原文地址:https://www.cnblogs.com/taopengcun/p/3687212.html
Copyright © 2011-2022 走看看