IOS 杂笔- 6(KVC-KVO)
2016-03-17 19:07
260 查看
kvc:
键值编码的基本概念
1:键值编码是一个用于间接访问对象属性的机制,使用该机制不需要调用存取方法和变量实例就可以访问对象属性。
2:键值编码方法在Objective-C非正式协(类别)NSKeyValueCoding中被声明,默认的实现方法由NSObject提供。
3:键值编码支持带有对象值的属性,同时也支持数值类型和结构。非对象参数和返回类型会被识别并自动封装/解封。
KVC 再某种程度上提供了访问器的替代方案。不过访问器方法是一个很好的东西,以至于只要是有可能,KVC也尽量在访问器方法的帮助下工作。为了设置或者返回对象属性,KVC按顺序使用如下技术:
1)检查是否存在名为-set<key>:的方法,并使用它做设置值。对于-get<key>和-set<key>:方法,将大写Key字符串的第一个字母,并与Cocoa的方法命名保持一致;
2)如果上述方法不可用,则检查名为-_<key>、-_is<key>(只针对布尔值有效)、-_get<key>和-_set<key>:方法;
3)如果没有找到访问器方法,可以尝试直接访问实例变量。实例变量可以是名为:<key>或_<key>;
4)如果仍未找到,则调用valueForUndefinedKey:和setValue:forUndefinedKey:方法。这些方法的默认实现都是抛出异常,我们可以根据需要重写它们。
kvo:
kvo键值观察。
kvo 实在kvc基础上实现观察的。
键值编码的基本概念
1:键值编码是一个用于间接访问对象属性的机制,使用该机制不需要调用存取方法和变量实例就可以访问对象属性。
2:键值编码方法在Objective-C非正式协(类别)NSKeyValueCoding中被声明,默认的实现方法由NSObject提供。
3:键值编码支持带有对象值的属性,同时也支持数值类型和结构。非对象参数和返回类型会被识别并自动封装/解封。
KVC 再某种程度上提供了访问器的替代方案。不过访问器方法是一个很好的东西,以至于只要是有可能,KVC也尽量在访问器方法的帮助下工作。为了设置或者返回对象属性,KVC按顺序使用如下技术:
1)检查是否存在名为-set<key>:的方法,并使用它做设置值。对于-get<key>和-set<key>:方法,将大写Key字符串的第一个字母,并与Cocoa的方法命名保持一致;
2)如果上述方法不可用,则检查名为-_<key>、-_is<key>(只针对布尔值有效)、-_get<key>和-_set<key>:方法;
3)如果没有找到访问器方法,可以尝试直接访问实例变量。实例变量可以是名为:<key>或_<key>;
4)如果仍未找到,则调用valueForUndefinedKey:和setValue:forUndefinedKey:方法。这些方法的默认实现都是抛出异常,我们可以根据需要重写它们。
kvo:
kvo键值观察。
kvo 实在kvc基础上实现观察的。
相关文章推荐
- IOS 杂笔-5(NSTimer极浅析)
- IOS 杂笔-4(属性与成员变量的区别)
- 40.iOS6与iOS7屏幕适配 edgesForExtendedLayout
- iOS9新特性
- iTunes Connect接入GameCenter配置
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- ios8 崩溃
- iOS shareSDK分享(省得以后再去找)
- iOS9 SDK新特性
- iOS8 SDK新特性
- iOS7 SDK新特性
- 【转】iOS隐藏导航条1px的底部横线
- iOS之Scanning的实现
- iOS - 一个页面多个tableview
- ios 静态库冲突的解决办法
- iOS GCD的用法
- iOS应用程序拨打电话
- iOS之轻松上手block
- iOS多线程之GCD小记
- iOS 定义View任意角为圆角