KVC和KVO学习

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);
}

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在编程中,最常见的就是程序的流程取决于你所使用的各种变量和属性的值,根据变量和属性的值确定后面运行的代码,有时会检...
    pro648阅读 5,572评论 2 27
  • KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...
    朽木自雕也阅读 5,476评论 6 1
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,801评论 0 9
  • KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...
    黑暗中的孤影阅读 50,111评论 74 441
  • 我现在在北京9号线上,晚上9点的车从北京西出发到石家庄。我们认识三年交往一周,这是我第一次去找他,心里甜甜的,很开...
    白菜当家阅读 923评论 0 1