• iOS基础 KVC和KVO


    疯狂IOS讲义这本书之前一直一直觉得没什么用,看了做不出像样的程序出来,但是经过几天的学习发现,没有一定的ios基础,做的程序永远都是在模仿他人的程序,把他人的代码复制 粘贴。。。为什么能够实现?原理 是什么?不懂。。。所以 必须懂原理,为什么?

    接下来就今天所学习的内容做一个小结;

    首先介绍一下KVO和KVC,一个是键值编码一个是键值监听,我第一次听这个也是很困惑,这是个神马意思?键值是啥?监听 还懂一点 。。。

    我们都知道之前我们都是通过setter和getter来设置和修改对象的属性,KVC和这种差不多,但是KVC允许字符串形式简介操作对象的属性,全称:Key Value Coding

    ,KVC有2个方法:第一个是:setvalue forKey:   为指定的属性设置值    第二个是   valueForKey: 获取指定属性的值 ,对应setter getter 

    其中对于 setvalue forKey:方法,其底层执行机制如下:

    1. 访问setter

    2. 成员变量 _name

    3. 成员变量 name

    4 valueforUndefinedKey(该方法引发一个异常,导致程序结束)

    当使用KVC方式操作的时候,某些属性可能不一定存在,那么就是自动调用 setvalue :forundefinedKey 和 valueForundefinedKey 方法 ,但是这2个方法默认的引发异常,这时候我们需要重写这2个方法,

    -(void) setValue: (id)  vlaue forindefineKey: (id) key
    {
    NSLog(@"not cunzai",key);
    }
    

     键值监听KVO简单说就是用来更新数据,ios应用程序通常会把组件分为 数据模型组件和视图组件,就是一个是存在内部数据的,一个是用户看到的,一旦数据模型组件发生了改变,那么就需要KVO监听然后对视图的组件更新!

    主要分为三个步骤:

    1.注册

    2.重写  observeValueForKeyPath :ofObject:change:context

    3.删除监听

  • 相关阅读:
    59、web框架以及Django框架
    58、bootstrap
    56、jQuery事件
    55、原生js事件与jQuery
    36-并发编程
    4.20---远程执行命令的CS架构软件
    35-socket 基于套接字的TCP与UDP
    34-网络编程
    33-异常处理
    4.15---元类练习
  • 原文地址:https://www.cnblogs.com/penger/p/4125053.html
Copyright © 2020-2023  润新知