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

时间: 2024-10-13 17:44:21

iOS基础 KVC和KVO的相关文章

iOS 中KVC、KVO、NSNotification、delegate 总结及区别

iOS 中KVC.KVO.NSNotification.delegate 总结及区别 1.KVC,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性.而不是通过调用Setter.Getter方法访问.KVO 就是基于 KVC 实现的关键技术之一. Demo: @interface myPerson : NSObject { NSString*_name; int      _age; int      _height; int      _w

【iOS】KVC 与 KVO

一.KVC与KVO *"KVC":key value Coding(键值编码) *目的:间接的修改或获取对象的属性,降低程序(类与类)之间的耦合度. *"KVO":key value Observer(键值观察),观察者模式.(检测模型变化用的多) *目的:通常用于观察某个对象的某个属性发生变化时,及时做出相应. 二.KVC的使用方式 KVC被称为iOS开发平台的大招!!! 能快速修改对象属性. *[p1setValue:@"xxxx"forKe

iOS开发-KVC和KVO的理解

KVC和KVO看起来很专业,其实用起来还是比较简单的,KVC(Key-value coding)可以理解为键值对编码,如果对象的基本类型,那么键值对编码实际上和get,set方法没有区别,如果是属性是另外一个对象,那么发现KVC用起来还是非常顺手,KVO(key-value observing)是键值对的观察者模式,如果对象的属性发生变更,那么会触发observeValueForKeyPath事件,KVO的这种通知特性让我们在开发的时候节省了不必要的代码,提高了开发效率. KVC键值对编码 KV

【原】iOS中KVC和KVO的区别

在iOS开发中经常会看到KVC和KVO这两个概念,比较可能混淆,特地区分一下 KVC(Key Value Coding) 1> 概述 KVC:Key Value Coding,键值编码,是一种间接访问实例变量的方法. KVC 提供了一个使用字符串(Key)而不是访问器方法,去访问一个对象实例变量的机制. 2> KVC部分源码(头文件) 1 // NSKeyValueCoding.h 2 @interface NSObject(NSKeyValueCoding) 3 4 + (BOOL)acce

iOS 中KVC、KVO、NSNotification、delegate 总结及区别-b

1.KVC,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性.而不是通过调用Setter.Getter方法访问.KVO 就是基于 KVC 实现的关键技术之一. Demo: @interface myPerson : NSObject { NSString*_name; int      _age; int      _height; int      _weight; } @end @interface testViewController

【iOS】KVC 和 KVO 的使用场景

http://blog.csdn.net/chenglibin1988/article/details/38259865 Key Value Coding Key Value Coding是cocoa的一个标准组成部分,它能让我们可以通过name(key)的方式访问property, 不必调用明确的property accssor, 如我们有个property叫做foo, 我们可以foo直接访问它,同样我们也可以用KVC来完成[Object valueForKey:@“foo”], 有同学就会问

ios之KVC、KVO

KVC是KeyValueCoding的简称,它是一种可以直接通过字符串的名字(key)来访问类属性的机制.而不是通过调用Setter.Getter方法访问. 获取值 - (id)valueForKey:(NSString *)key; - (id)valueForKeyPath:(NSString *)keyPath; - (id)valueForUndefinedKey:(NSString *)key; 设置值 - (void)setValue:(id)value forKey:(NSStri

KVC,KVO,Notification,delegate

iOS 中KVC.KVO.NSNotification.delegate 总结及区别 1.KVC,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性.而不是通过调用Setter.Getter方法访问.KVO 就是基于 KVC 实现的关键技术之一. Demo: @interface myPerson : NSObject { NSString*_name; int      _age; int      _height; int      _w

ios开发UI基础—Kvc简单介绍

一.KVC简单介绍 KVC key valued coding 键值编码 KVC通过键值间接编码 补充: 与KVC相对的时KVO,即key valued observer 键值观察.监听某一个模型的属性,只要模型属性的值一变化就通知你. 二.使用KVC 1.KVC基本使用介绍 (1)代码示例: 新建一个命令行项目,用以演示KVC的用法 完成之后为项目添加一个Person类. 为Person类添加两个属性(name和age),注意这两个属性的类型. 1 #import <Foundation/Fo