gpt4 book ai didi

ios - Singleton 模式在 Swift 中使用得好吗?

转载 作者:行者123 更新时间:2023-11-28 15:11:29 27 4
gpt4 key购买 nike

我只知道 UIApplication 被设计成单例模式。但是在实际项目中,单例模式在Swift中用的好吗?

最佳答案

您在开发者洞穴中听到的一个常见短语是“我知道单例很糟糕但是......”,似乎几乎达成共识单例“糟糕” 但我们看到它们被 Apple第三方开发人员无处不在地使用,包括在他们的应用程序和共享框架中。

所以您可能会问为什么我们使用单例。我会让你进去。

  1. Apple 使用它们!作为第三方开发者,我们向 apple 寻求“最佳实践”,Apple 使用的任何模式也被社区普遍采用

    <
  2. 方便。单例允许您从任何地方访问一个对象

     class LoginController: UIViewController {
    let nameLabel = UILabel()

    override func viewDidLoad() {
    super.viewDidLoad()
    nameLabel.text = ApiService.shared.user.name
    }

    private func handleLogoutButtonOnTap() {
    ApiService.shared.logout()
    }
    }

使用 ApiService 单例检索用户对象并注销。我同意这很方便。

那么单例有什么不好呢?

  1. 它们是全局可变的共享状态,当状态意外改变时会出现错误,可能是新的开发人员加入团队

  2. 单例和使用它们的代码之间的关系没有明确定义

  3. 管理它们的生命周期可能很棘手。单例在您的应用程序的整个持续时间内都是活跃的。因此管理它们可能很困难。这也使得为代码编写测试变得困难,因为您无法在每种情况下轻松地从零开始。

总而言之,关于单例的看法不一,我并不是说永远不要使用它们,但还有其他选择。

社区正在远离使用单例,而倾向于使用 Dependency Injection。阅读它

关于ios - Singleton 模式在 Swift 中使用得好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47568750/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com