KVC

  1  key Value Coding,键值编码,是一种间接访问实例变量的方法

  2  KVC 提供了一种使用字符串(key)而不是访问器方法,去访问一个对象实例变量的机制

  3  KVC 常用方法

  -(id) valueForKey:(NSString *)key;

  -(void) setValue:(id)value forKey:(NSString *)key;

  -(id) valueForKeyPath:(NSString *)keyPath;

  -(void) setValue:(id)value forKeyPath:(NSString *)keyPath;

  -(void) setValuesForKeysWithDictionary:(NSDictionary *)keyedValues;

  4 注意:当使用 KVC 时,如果 key 值和属性名不一样时,就会崩溃。

  解决崩溃方法:需要在 类中重写一下两个方法

  -(void) setValue:(id)value forUnderfinedKey:(NSString *)key{

}

  -(id) valueForUndefinedKey:(NSString *)key{

}

  5 KVC 实现机制

    KVC按顺序使用如下技术:

  (1)检查是否存在  getter 方法 -<key>或者setter方法-set<key>:的方法

  (2)如果没有上述方法,则检查是否存在名字为-_<key>、<key>的实例变量

  (3)如果仍然未找到,则调用 valueForUnderfinedKey: 和 setValue:forUndefinedKey:方法。这些方法的默认实现都是抛出异常,我们可以根据需要重写他们。

iOS 常用设计模式和机制之 KVC的更多相关文章

  1. iOS常用设计模式和机制之代理

    Delegate : 1 代理设计模式的使用我们首先需要明白三个要素 *委托方:委托别人去执行某些操作的人(对象) *代理方:被委托区执行某些操作的人(对象) *协议:(protocol)委托方需要代 ...

  2. iOS 常用设计模式和机制之KVO

    KVO http://blog.kyleduo.com/2014/10/20/ios_learning-kvo/ 定义: KVO:Key-Value Observing,是Foundation框架提供 ...

  3. iOS常用设计模式和机制之Block简单使用

    Block :block 实际上就是 Objective-C语言对闭包的实现 闭包(Closure):闭包就是一个函数,或者一个指向函数的指针,加上这个函数执行的非局部变量.闭包允许一个函数访问声明该 ...

  4. IOS常用设计模式之委托模式

    对于iOS开发,举例Cocoa框架下的几个设计模式为大家分析.当然,Cocoa框架下关于设计模式的内容远远不止这些,我们选择了常用的几种:单例模式.委托模式.观察者模式.MVC模式. 委托模式 委托模 ...

  5. iOS常用设计模式:MVC、单例、代理、观察者。

    MVC 模型-视图-控制器(MVC)设计模式 MVC根据角色划分类,涉及到三个角色: Model:模型保存应用程序的数据. View:视图是模型的可视化表示以及用户交互的控件. Controller: ...

  6. iOS常用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)

    1. 简单工厂模式 如何理解简单工厂,工厂方法, 抽象工厂三种设计模式? 简单工厂方法包含:父类拥有共同基础接口,具体子类实现子类特殊功能,工厂类根据参数区分创建不同子类实例.该场景对应的UML图如下 ...

  7. iOS常用设计模式笔记

    一.原则 1.单一职责原则 (Single Responsiblity Principle SRP) 2.开闭原则(Open Closed Principle,OCP) 3.里氏替换原则(Liskov ...

  8. IOS开发常用设计模式

    IOS开发常用设计模式 说起设计模式,感觉自己把握不了笔头,所以单拿出iOS开发中的几种常用设计模式谈一下. 单例模式(Singleton) 概念:整个应用或系统只能有该类的一个实例 在iOS开发我们 ...

  9. iOS常用的设计模式

    iOS常用的设计模式有:单例模式.委托模式.观察者模式和MVC模式.下面分别简单介绍. 一:单例模式 我们常用的UIApplication.NSUserdefaults.NSNotificationC ...

随机推荐

  1. 关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究 转载

    1.XA XA是由X/Open组织提出的分布式事务的规范.XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接 ...

  2. iOS核心动画学习整理

    最近利用业余时间终于把iOS核心动画高级技巧(https://zsisme.gitbooks.io/ios-/content/chapter1/the-layer-tree.html)看完,对应其中一 ...

  3. js之oop <三>属性标签

    读取属性标签 获取对象属性标签,用 Object.getOwnPropertyDescriptor方法.getOwnPropertyDescriptor(); 参数:属性所在对象(object),属性 ...

  4. oracle 之 游标

    本期主题  灰蓝 游标用来处理从数据库中检索的多行记录(使用SELECT语句)存放的是select 的结果 利用游标,程序可以逐个地处理和遍历一次检索返回的整个记录集 --隐式游标 begin upd ...

  5. 查看rpm和war包内容

    解压rpm包的内容:(没有安装,就像解压tgz包一样rpm包)rpm2cpio *.rpm | cpio -div 解压war包的内容: jar -xvf project.war 解压到当前目录

  6. javaWeb4 http

    状态码:服务器处理请求的结果(状态) 常见的状态: 200: 表示请求处理完成并完美返回.ok 302:表示请求需要进一步细化. 404:表示客户访问的资源找不到.Not Found 500:表示服务 ...

  7. jquery打字机效果

    html代码 <div id="box"> <div id="content"> <div id="code" ...

  8. ajax json 动态传值

    <a href="#" onclick="getRightInfo(${v.ctid})"></a> <div id=" ...

  9. DIV设置overflow无效的原因

    因为项目需求需要在一个div中添加多个checked 添加的时候使用了 <label><input type="checkbox" value="123 ...

  10. apache开启.htaccess

    1 . 如何让的本地APACHE开启.htaccess 如何让的本地APACHE开启.htaccess呢?其实只要简朴修改一下apache的httpd.conf设置就让APACHE.htaccess了 ...