IOS 杂笔- 6(KVC-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 杂笔- 6(KVC-KVO))