KVC解析
- valueForKey (总体规划,先找相关方法,再找相关变量)
- 1、先是找相关方法,如果方法找不到
- 2、那么去判断
+ (BOOL)accessInstanceVariablesDirectly{
return YES;
}
此方法是否返回YES,默认为YES
- 3、如果是NO,直接执行KVC的valueForUndefinedKey:(系统弹出异常,未定义key),
- 如果是YES,继续再去找相关变量
- 相关方法:getKey, key 优先级getKey大
容量方法:可以返回数组
- (NSUInteger)countOf<Key>{
return 2;
}
- (id)objectIn<Key>AtIndex:(NSUInteger)index{
if (index == 0) {
return @"hanck";
}
return @"badian";
}
* 相关变量 **_key** **_isKey** **key** **isKey** 优先级依次降低
- setValue 方法
先找set方法,找不到再给属性赋值 setKey setIsKey
setValue:(id)value forKeyPath:(NSString *)keyPath来设置私有变量
打断点在viewdidappear里获取subViews
隐藏方法:max min sum count avage
KVO使用
- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context;
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{
NSLog(@"%@",change);
}
可以手动触发通知,默认是自动触发通知