美文网首页
iOS中的KVO模式

iOS中的KVO模式

作者: JSCocoa | 来源:发表于2015-09-06 12:41 被阅读118次

KVO提供了一种机制,当指定对象的属性的属性被修改后,observer就会接到通知。KVO其实是“观察者”设计模式的一种应用。这种模式有利于两个类间的解耦合,比如Model和Controller间的解耦合。

参考:iOS中KVO模式的解析和应用

文章提到了负责处理业务逻辑的Walker类和负责视图控制的ViewController类,其中一点是ViewController需要将Walker的属性显示出来,并实时更新。例子列举了4种方法,突出了KVO模式的优点。

Swift中使用KVO

文章中提到两点:

1 Swift中使用KVO仅限于NSObject子类

2 要将观测的对象标记为dynamic

原因可以理解,KVO基于KVC和动态派发技术实现,这些都是Objective-C运行时的概念。Swift为了效率,禁用了动态派发。

大多数情况下,我们需要观察的属性不一定有dynamic修饰,文章也给出了解决办法。

Apple用什么方式实现一个对象的KVO

当你要观察一个对象时,一个新的类会被动态创建,这个类继承当前类,并重写了被观察属性的setter方法,setter方法中会调用willChangeValueForKey和didChangeValueForKey。然后通过isa swizzling将isa指针指向新创建的子类,于是对象就变成了新创建子类的实例。

相关文章

  • KVO与KVC

    KVO与KVC是观察者模式在iOS中的一种实现 KVO 一、KVO的介绍 KVO就是观察者模式,说白了就是你关心的...

  • iOS下KVO使用过程中的陷阱KVO,

    【原】iOS下KVO使用过程中的陷阱KVO,全称为Key-Value Observing,是iOS中的一种设计模式...

  • 深入理解KVO机制

    什么是KVO机制 KVO,全称是key_value_Observing,是ios中的一种设计模式,名为观察者模式,...

  • Android 从观察者模式到 DataBinding

    前言 做过 iOS 的同学应该都了解过 KVO,是观察者模式在 Objective-C 中的应用。使用 KVO,能...

  • iOS中的KVO模式

    KVO提供了一种机制,当指定对象的属性的属性被修改后,observer就会接到通知。KVO其实是“观察者”设计模式...

  • 常用设计模式整理

    ios面试题(整理) ios常用的设计模式有哪些? MVC模式、委托模式、观察者模式(kvo、kvc、通知机制)、...

  • iOS KVO,KVC

    iOS KVO,KVC KVO 1.KVO 是一种观察者设计模式,是利用 isa 混写机制来实现 KVO 的。 当...

  • iOS底层原理 - 设计模式与架构

    面试题引发的思考: Q: 用过哪些设计模式? iOS中主要使用单例模式、代理模式、观察者模式(通知、KVO)。 Q...

  • iOS设计模式 —— KV0

    iOS设计模式 —— KV0 刨根问底KVO KVO 全称 Key-Value Observing。中文叫键值观察...

  • KVO应用、原理及自实现

    一.KVO简介 KVO 是ios里,观察者设计模式的一种应用实现,依赖runtime,基于KVC,KVO提供了一种...

网友评论

      本文标题:iOS中的KVO模式

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