首页 > 解决方案 > 来自 iOS 中不同 ViewControllers 时改变行为的全局变量/单例的替代品。

问题描述

关于全局变量的替代方案,SO 上已经存在许多问题。我希望这个问题对一个场景足够具体,以获得回应。

我(错误地)依赖于 10 多个全局变量,这些变量在连接到新的 ViewController 或 RestAPI 完成处理程序后用于区分行为。

例子:

var comingFromRegister: Bool = false
var comingFromMenuToUpdateAddress: Bool = false 
var comingFromCancelOrderFromOrdersVC: Bool = false

我很好奇摆脱全局变量的最佳方法是什么。我可以创建一个名为 ComingFrom 的单例类来处理这些场景,例如:

final class ComingFrom {
    static let shared = ComingFrom()

    var register: Bool = false
    var menuToUpdateAddress: Bool = false
    var cancelOrderFromOrdersVC: Bool = false

    private init() {}
}

因为依赖单例有很多缺点,对于这些场景有什么更好的方法?

标签: iosswiftsingletonglobal-variables

解决方案


这取决于您的架构。对于您的情况,似乎 enum 更好。


推荐阅读