
KVO
文章平均质量分 93
KVO
卡卡西Sensei
这个作者很懒,什么都没留下…
展开
-
iOS底层探索之KVO(五)—FBKVOController分析
回顾在前面的几篇博客中,已经介绍了KVO的基本使用,如何自定义 KVO,那么本篇博客将分析一下FBKVOController这个优秀的KVO三方库。FBKVOController是一个函数式编程实现,不用移除观察者者。1. FBKVOController简单介绍FBKVOController是Facebook开源的一个基于系统KVO实现的框架。支持Objective-C和Swift语言。GitHub地址键值观察是一种特别有用的技术,用于在模型-视图-控制器应用程序中的层之间进行通信。KV原创 2021-08-08 12:54:27 · 1095 阅读 · 0 评论 -
iOS底层探索之KVO(四)—自定义KVO
回顾在上篇博客已经自定义了KVO,但是还没有完善,还有些问题需要解决,这么本篇博客就把自定义KVO进行完善。1. 观察者信息保存问题在上一篇的博客中,自定义KVO的简单逻辑是已经实现了,但是这里还是存在一个大的问题,就是如果我们要观察多个属性的时候,以及新值和旧值,都要观察以及传递了context的情况下就无效了。解决的办法就是,我们需要保存观察者相关的信息,那么就创建一个新类JPKVOInfo保存,代码的实现如下:typedef NS_OPTIONS(NSUInteger, JPKeyValue原创 2021-08-07 09:49:26 · 430 阅读 · 0 评论 -
iOS底层探索之KVO(三)—自定义KVO
回顾在前两篇博客中,已经介绍了KVO的相关操作,还有KVO的底层逻辑是通过动态生成子类,重写父类的方法实现的,那么我们如何自定义一个KVO呢?iOS底层探索之KVO(一)—KVO简介iOS底层探索之KVO(二)—KVO原理分析1. 前期分析系统的KVO是在NSObject的上面拓展了一些能力,如下图所示:系统的KVO使用的三部曲是:添加监听addObserver监听回调observeValueForKeyPath移除监听removeObserver我们也仿照系统的API自定义原创 2021-08-06 08:43:55 · 484 阅读 · 0 评论 -
iOS底层探索之KVO(二)—KVO原理分析
回顾在上一篇博客中,已经介绍了KVO的相关操作,那么接下来就去探索一下KVO的底层逻辑,KVO到底是如何实现的呢?在官方文档中有如下图中的说明键值观察是使用称为isa-swizzling的技术实现的。该isa指针,顾名思义,指向对象的类,它保持一个调度表。该调度表主要包含指向类实现的方法的指针,以及其他数据。当观察者为对象的属性注册时,被观察对象的 isa指针被修改,指向中间类而不是真正的类。因此,isa指针的值不一定反映实例的实际类。你不应该依赖isa指针来确定类的成员。原创 2021-08-05 08:40:04 · 475 阅读 · 0 评论 -
iOS底层探索之KVO(一)—KVO简介
回顾在iOS的面试中除了KVC是经常被问到的,还有KVO也是常问的,那么本篇博客就对KVO进行探索和分析下。1. 什么是KVOKVO 是 Objective-C对观察者设计模式的一种实现。KVO提供一种机制,指定一个被观察对象(例如A类),当对象某个属性(例如A中的字符串name)发生更改时,对象会获得通知,并作出相应处理;【且不需要给被观察的对象添加任何额外代码,就能使用KVO机制】。一般继承自NSObject的对象都默认支持KVO。KVO是响应式编程的代表。苹果官方文档Key-Value O原创 2021-08-04 09:26:16 · 1329 阅读 · 0 评论