【问题标题】:In Swift, What is the difference between a Singleton and the static version of a class?在 Swift 中,单例和类的静态版本有什么区别?
【发布时间】:2016-12-27 17:10:21
【问题描述】:

我已经有一段时间没有使用单例了,因为我从静态类中获得了单例的所有功能。两者之间有什么我应该注意的区别吗?

单例示例:

class SomeManager {
    static let sharedInstance = SomeManager()
    var user: User!
    init(user: User) {
        self.user = user
    }
}

有用法:

SomeManager.sharedInstance.user

静态类示例:

class SomeManager {
    static var user: User!
    init(user: User) {
        SomeManager.user = user
    }
}

有用法:

SomeManager.user

我知道明显的区别是一个是整个类被设为静态,另一个是声明特定部分(希望来自单个实例)静态。有什么理由使用其中一个。

我现在有一个网络设置,其中我有一个单例网络调用类,可以通过一个类中的一堆静态方法访问,该类只包含网络单例及其静态方法。我发现这对我的场景有适当的范围,但还没有做足够的研究来保证方法的质量。

示例:

class NetworkCalls {
    static let network = Network()

    static func getToken(completion: () -> Void) {
        network.apiGetToken() {
            completion()
        }
    }
}

有用法:

NetworkCalls.getToken() {
    print("Network Call Completed")
}

它工作得很好,所以我只是在寻找效率问题、要考虑的事情以及这种方法与替代方法之间的区别。任何提示/建议将不胜感激!

【问题讨论】:

标签: swift xcode static singleton


【解决方案1】:

我可能错了,但是单例的想法是获得一个可用于所有应用程序的唯一单个类,该类在生命周期中仅初始化一次(大多数情况),并且主要用于在生命周期内的状态验证你的应用程序。

静态类是更通用的类。

虽然你可以对静态类做同样的事情......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-01
    • 2014-09-29
    • 2011-10-03
    • 2013-07-21
    • 1970-01-01
    • 2014-06-27
    • 2012-02-08
    相关资源
    最近更新 更多