KVO进阶(三)

作者: 01_Jack | 来源:发表于2015-10-23 16:27 被阅读952次

前言

进阶三回顾前两篇文章,共分两部分。第一部分写个奇怪的小程序,用来说明KVO的监听和被监听对象的可变性,第二部分接着上篇写KVO的依赖设置

正文

part 1

这部分直接贴代码,有疑问的地方欢迎提问(内部有循环引用没有解除)

Bridge Person Main
part 2

进阶二中提到过KVO的内部通知,很容易想到是否可以在某个方法中设置多个属性通知从而达到依赖的目的。

Observer.png Person.h Person.m Main

其实如果进入Foundation/NSKeyValueObserving.h中可以发现这么个方法

+ (NSSet<NSString *> *)keyPathsForValuesAffectingValueForKey:(NSString *)key

这里可以直接实现KVO的依赖。把Person.m中的两个setter干掉,然后代码这样写

+  (NSSet<NSString *> *)keyPathsForValuesAffectingValueForKey:(NSString *)key {
    NSSet *keyPaths = [super keyPathsForValuesAffectingValueForKey:key];
    if ([key isEqualToString:@"fullName"]) {
        NSArray *affectingKeys = @[@"givenName", @"familyName"];
        keyPaths = [keyPaths setByAddingObjectsFromArray:affectingKeys];
    }
    return keyPaths;
}

再来看一次运行结果

Main

相关文章

  • KVO进阶(三)

    前言 进阶三回顾前两篇文章,共分两部分。第一部分写个奇怪的小程序,用来说明KVO的监听和被监听对象的可变性,第二部...

  • KVO进阶——KVO实现探究

    本篇会对KVO的实现进行探究,不涉及太多KVO的使用方法,但是会有一些使用时的思考。 一、使用上的疑问 1.key...

  • 对于KVO,你真的了解么?

    目录 关于面试 官方文档 核心代码 (Key-Value Observing) 进阶(手动创建KVO) 关...

  • KVO进阶(一)

    前言 KVO(key value observing),可以监听指定键,值的改变。与KVC相似,KVO也是以非正式...

  • KVO进阶(二)

    前言 这篇文章主要写KVO的内部通知 正文 先上代码 经测试,person.name = @"Jack"和[per...

  • KVO进阶(四)

    前言 这篇写一下KVO的原理及手动实现 正文 先看这样一段代码 isa是真实类型,class是系统提供方法获取的类...

  • KVO基本使用

    分三部分解释KVO一.KVO基本使用二.KVO原理解析三.自定义实现KVO 一、KVO基本使用 使用KVO,能够非...

  • RxSwift学习(7)KVO知识补充

    网上好多关于OC的KVO介绍。在这里就不详细赘述了。参考KVO原理分析及使用进阶.在RxSwift中使用todoN...

  • KVO 解析

    KVO解析(一) —— 基本了解KVO解析(二) —— 一个简单的KVO实现KVO解析(三) —— KVO合规性K...

  • OC语法:KVO的底层实现

    一、KVO是什么二、怎么使用KVO三、KVO的底层实现四、KVO常见面试题 一、KVO是什么 KVO全称Key-V...

网友评论

    本文标题:KVO进阶(三)

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