KVC和KVO学习

KVC解析

  • valueForKey (总体规划,先找相关方法,再找相关变量)
    • 1、先是找相关方法,如果方法找不到
    • 2、那么去判断
+ (BOOL)accessInstanceVariablesDirectly{   
    return YES;
    }

此方法是否返回YES,默认为YES

  • 3、如果是NO,直接执行KVC的valueForUndefinedKey:(系统弹出异常,未定义key),
    • 如果是YES,继续再去找相关变量
    • 相关方法:getKey, key 优先级getKey大
      容量方法:可以返回数组
     - (NSUInteger)countOf{
   return 2;
   }
   - (id)objectInAtIndex:(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 *)change context:(void *)context{
    NSLog(@"%@",change);
}

可以手动触发通知,默认是自动触发通知

你可能感兴趣的:(KVC和KVO学习)