iOS之KVC与KVO

作者: 小僧有礼了 | 来源:发表于2016-10-23 19:42 被阅读91次

KVC:

  • kvc:Key Value Coding,即键值编码,可以动态设置的对象的属性值。
  • 动态设置设置属性,优先调用settet方法,没有实现则搜索成员变量_属性,仍没有找到则直接搜索成员变量属性,如果以上都没有找到则会调用setValue:forUndefineKey方法。
  • 动态读取属性,跟设置属性类似。优先调用getter方法,不存在则找成员变量_属性,还不存在则直接搜索成员变量属性,都没找到则调用valueforUndefineKey:方法。
  • 复合路径和简单路径
  • 简单路径只有一层(表示你只能读写第一层)
  • 复合路径有多层(比如:你的类里面包含着其他类,其他类也有着属性,你可以直接读写其他类的属性)
setValue:forKeyPath:

注意:
- 搜索过程中不管这些方法、成员变量是否是私有都可以被读取,不会因为私有二导致失败。
- 如果调用了setValue:forUndefineKey和valueforUndefineKey:这两个方法,而你又没有重写,系统会崩溃并且抛出异常

KVO:

  • kvo:Key Value Observing,它能够观察一个对象键值变化。
  • KVO是建立在KVC之上

我们不需要写过多的代码,只需要注册这个监听,就能很好的监听某一属性的值的变化,然后做出对应的操作。

//添加观察者
    - (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context;
[被观察者的对象 addObserver:观察者 forKeyPath:@"被观察者的属性" options:NSKeyValueObservingOptionNew(更新的值) | NSKeyValueObservingOptionOld(更新前的值) context:nil];


//键值修改时触发回调
        //参数1:属性 名称     参数2:被观察者对象     参数3:修改的值
    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;
    
//移除观察者
    - (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath;

相关文章

  • KVC 和 KVO

    iOS-KVC和KVO精炼讲解(干货)KVC 和 KVOiOS开发系列--Objective-C之KVC、KVO细...

  • KVC

    iOS 如何使用KVC iOS开发UI篇—Kvc简单介绍 iOS开发系列--Objective-C之KVC、KVO

  • iOS - KVO

    [toc] 参考 KVO KVC 【 iOS--KVO的实现原理与具体应用 】 【 IOS-详解KVO底层实现 】...

  • iOS日记15-KVC

    1.iOS开发技巧系列---详解KVC 2.漫谈 KVC 与 KVO 3.KVC/KVO原理详解及编程指南 关键点...

  • KVC、KVO

    IOS开发系列--Objective-C之KVC、KVO - KenshinCui - 博客园

  • iOS面试 - 收藏集 - 掘金

    KVC 与 KVO 拾遗补缺 - iOS - 掘金KVC 和 KVO 是 Cocoa 框架提供的一个非常强的特性,...

  • iOS-KVO浅谈

    上一篇:iOS-KVC浅谈 前言:KVO 作为 KVC 的同袍兄弟,功能更强大,聊聊 KVO。 一、KVO 简介 ...

  • iOS基础(四) - KVC和KVO

    iOS观察者模式学习 (1)KVC与KVO简介 KVC KVC(Key-value coding)是一种间接更改对...

  • ReactiveCocoa相关

    随手记录: 1、iOS开发系列--Objective-C之KVC、KVO 2、ReactiveCocoa初探

  • iOS面试题:KVC的赋值和取值过程是怎样的?KVO原理是什么?

    更多:iOS面试题大全 1、KVC赋值 2、 KVC取值 3、 KVO原理 KVO 是 Objective-C 对...

网友评论

    本文标题:iOS之KVC与KVO

    本文链接:https://www.haomeiwen.com/subject/vpskuttx.html