在Swift中,Singleton和类的静态版本有什么区别?

时间:2016-12-27 17:10:22

标签: swift xcode static singleton

我有一段时间没有发现自己使用单例,因为我从静态类中获得了一个单元的所有功能。我应该注意两者之间是否存在差异?

Singleton示例:

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")
}

它运作正常,所以我只是在寻找效率问题,需要考虑的事情,以及这种与替代方法之间的差异。任何提示/建议都将受到高度赞赏!

1 个答案:

答案 0 :(得分:0)

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

静态类更通用的是类。

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