【发布时间】:2021-08-18 03:47:02
【问题描述】:
Context,一个使用 UIKit 和 MVC 的 iOS 应用。
模型 A 有一个单例对象,其属性值之一(在本例中为 foo)可以在运行时更改。 模型 B 有一个属性模型 C,它是使用模型 A 的属性值初始化的。
class ModelA {
private(set) var foo: CustomObjectClassName
static let shared = ModelA()
}
class ModelB {
private var bar: ModelC
init() {
self.bar = ModelC(ModelA.shared.foo)
}
// TODO: Observer `foo` value change in Model A and then
// reinit ModelC to replace the old `bar` object
}
应该使用什么常见的设计模式或机制让模型 B 知道模型 A 中的属性更改并重新初始化自己的属性?
我发现了两种可以使用的模式;然而,我对它们的了解越多,它们似乎是为模型和控制器之间的通信而设计的。
- 通知中心(通知和观察员)
- 键值观察
相关信息
【问题讨论】:
-
使用属性观察者和委托调用?
标签: ios swift nsnotificationcenter key-value-observing