在Swift中替换KVO(键值观察)

KVO是Objective-C中的一种绑定方式。 当观察对象发生变化时,允许观察者接收通知。 自动键值观察是使用称为isa-swizzling的技术实现的。

isa用于确保运行时对象的类型。 所有对象都拥有isa指针来指向对象的类。 从NSObject继承的实例在初始化时包含一个isa。

目标C

在Objective-C中很容易看到有关isa的一些信息。

初始化p1和p2时 ,它们的isa指针指向对象的类(人)。 但是,如果将观察者添加到对象中,则isa指针将被更改。

在OC运行时中,我们甚至可以重写观察对象的setter方法,并在接收到通知后执行相应的操作。

尽管KVO(Key-Value Observing)在iOS开发中是一个非常重要的概念,但是在纯Swift项目中它可能不是一个好的解决方案。

迅速

我们在项目中创建相同的类Person ,并在代码中添加观察者。 但是,如果我们忘记了一些信息,我们将收到错误消息。

致命错误:无法从KeyPath Swift.ReferenceWritableKeyPath 中提取字符串

NSObjects( p1&p2 )初始化为Person类,并且isa指针都指向Person类。 观察者需要一个KeyPath(字符串类型)来注册观察者通知。

实际上,我最近才发现了这个很棒的工具。 借助此反应式编程库,我们可以轻松实现KVO几乎相同的要求。 但是最好的办法是摆脱Swift中的Objective-C! 😆😏

下次见。 😎✨