假设我有一个 Car
对象,它具有颜色、型号、品牌和座位数等标准属性。
我的应用程序中的每个 View Controller 都将负责获取每个属性,直到结束:
颜色 View Controller --> Model View Controller --> 品牌 View Controller --> 座位 Controller --> 结果 Controller
我现在在每个 Controller 之间传递数据的方式是通过单例,但我在网上读到这是一种反模式,稍后会产生很多耦合。那么问题来了:将所有数据汇集到 Result Controller
的最佳方式是什么?
最佳答案
尝试将您的单例修改为服务。
例如:您的单例 StateManager
有两个方法:set(state: SomeState)
和 getState() -> State
。
首先,使用协议(protocol):
protocol StateManager: class {
func set(state: SomeState)
func getStatus() -> SomeState
}
其次,您的应用模块不应该知道它们使用的 witch StateManager
:
class MyAppController: UIViewController {
var stateManager: StateManager?
...
}
当你初始化你的 VC 时:
let vc = MyAppController()
vc.stateManager = ConcreteStateManager.sharedInstance
//present vc
如果您有一个创建 VC 的集中位置,您可以在其中保存 ConcreteStateManager
实例,而无需调用 sharedInstance
。
此外,请阅读有关 swift 中的依赖注入(inject)的内容。
关于ios - 如何在不使用单例的情况下在多个 View Controller 之间传递数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46882365/