疯狂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.删除监听