iOS 开发面试必备

由于本人最近想换工作,趁此机会一一写下,希望在自己回顾的过程中可以帮到大家。

1.KVO实现原理

想知道原理,那你首先得知道KVO是什么啊?对不对。
KVO(key-value-observing)简单的来说,就是一个对象注册了一个监听者,当对象的属性发生变化时,监听作出相应的动作。

2.KVO的使用非常简单

addObserver:forKeyPath:options:context: 使用该方法,需要对 观察的对象 注册一个观察者。

视图

在这里估计有疑问的是options:一共有四个

1.NSKeyValueObservingOptionNew:当options中包括了这个参数的时候,观察者收到的change参数中就会包含NSKeyValueChangeNewKey和它对应的值,也就是说,观察者可以得知这个property在被改变之后的新值。

2.NSKeyValueObservingOptionOld:和NSKeyValueObservingOptionNew的意思类似,当包含了这个参数的时候,观察者收到的change参数中就会包含NSKeyValueChangeOldKey和它对应的值。

3.NSKeyValueObservingOptionInitial:当包含这个参数的时候,在addObserver的这个过程中,就会有一个notification被发送到观察者那里,反之则没有。

4. NSKeyValueObservingOptionPrior :当包含这个参数的时候,在被观察的property的值改变前和改变后,系统各会给观察者发送一个change notification;在property的值改变之前发送的change notification中,change参数会包含NSKeyValueChangeNotificationIsPriorKey并且值为@YES,但不会包含NSKeyValueChangeNewKey和它对应的值。

其实单纯的看这个KVO 是非常简单的东西,但是我们在使用的过程中需要察觉到,这个东西是不是跟 KVC的名字很像,那么他们有关系吗。还有,KVO和通知有什么区别呢? 这些问题大家是否都有讨论过呢。

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