KVO相关

一 应用场景

  1. 修改内部/隐藏变量
  2. model和字典互相转换
  3. 对容器所有元素发送同一消息:当对容器类使用KVC时,valueForKey:将会被传递给容器中的每一个对象,而不是容器本身进行操作。结果会被添加进返回的容器中,这样,开发者可以很方便的操作集合来返回另一个集合。(如:数组深拷贝)

kvc函数
 简单集合运算符共有@avg, @count , @max , @min ,@sum5
@distinctUnionOfObjects
@unionOfObjects
它们的返回值都是NSArray,区别是前者返回的元素都是唯一的,是去重以后的结果;后者返回的元素是全集。但仅返回值的数组

@distinctUnionOfArrays
@unionOfArrays
@distinctUnionOfSets
@distinctUnionOfArrays:该操作会返回一个数组,这个数组包含不同的对象,不同的对象是在从关键路径到操作器右边的被指定的属性里
@unionOfArrays该操作会返回一个数组,这个数组包含的对象是在从关键路径到操作器右边的被指定的属性里和@distinctUnionOfArrays不一样,重复的对象不会被移除
@distinctUnionOfSets和@distinctUnionOfArrays类似。因为Set本身就不支持重复。

二 应用顺序

  1. get<Key>,<key>,is<Key> 􏱢􏳺􏲔􏲗􏲘􏲸􏲳 getter 􏲗􏲘􏰊􏲳􏲴􏱢􏳃􏲶􏱰􏱱􏲄􏲅􏲝􏰙􏰚􏲡

  2. BOOL 􏱶􏰖 Int 会转换成 􏳻􏱹􏳍􏳼􏰊 􏲶􏳫􏳁􏳽􏳾􏲚􏰗􏱟NSNumber 􏱪􏱳􏲱􏲒􏰙􏰚􏳠􏰇􏱢 getter 􏲲􏰿􏲳􏲴􏰊 KVC 􏲰􏲶􏲸􏲳 

  3. 如果没有回继续查找​​​​​​​countOf<Key>,objectIn<Key>AtIndex 􏱶 <Key>AtIndexes 􏳿􏳷􏱢􏲗􏲘􏲝􏰙􏰚 countOf<Key> 􏲗􏲘 会 他们会返回NSKeyValueArray是􏴈􏲭􏳈􏴊􏱴􏳸 NSArray的子类 􏱢􏲗􏲘􏰊􏴅
    之后会跑类方法
    + (BOOL)accessInstanceVariablesDirectly 如果返回YES 􏰮􏲻􏲼􏱽􏳎􏰱􏰊􏳄􏳅􏳟􏲖􏴜􏱢􏲛􏱹􏰗􏱺􏰊􏲶􏳹 那么就查找成员变量_<key>,_is<Key>,<key>,is<Key> 􏱢􏳺􏲔􏳋􏳌􏲚􏲣􏲤􏲥􏲦􏰊􏱞􏲠􏰟􏴝􏴞􏱞􏳅􏳉􏰊􏴟􏳎􏱞􏱺􏱰􏱱􏱲􏱁􏳕􏴠􏲤􏲥􏴡􏴢􏲿􏴣􏳾􏱵􏰊􏴤􏲉􏲊􏱗􏴥􏴦􏲝􏰙􏰚􏲾􏲪􏲿

  4. 􏳍􏲗􏲘 如果+ (BOOL)accessInstanceVariablesDirectly 􏲹􏲺返回NO 那么就运行 􏱢􏳃􏰊􏳄􏳅􏲶􏱰􏱱􏲄􏲅 valueForUndefinedKey: 􏲗􏲘􏰊􏲻􏲼􏲡􏳬􏳨􏳭􏰅默认异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值