一尘不染

很难快速实施简单的单例

swift

我创建了一个新文件->swift file。所谓Globals.Swift 然后在那里我做:

class Globals {

    static let sharedInstance = Globals()

    init() {
        var max=100
    }

}

UIViewcontroller我想在另一个class()中使用它,

Globals.sharedInstance //is going ok

很好,但是当我深入研究.max错误时。


阅读 222

收藏
2020-07-07

共1个答案

一尘不染

您不能只是拥有var = xxx一个init。该变量必须在类顶层声明。

使用单例的示例:

class Globals {

    static let sharedInstance = Globals()

    var max: Int

    private init() {
        self.max = 100
    }

}

let singleton = Globals.sharedInstance

print(singleton.max) // 100

singleton.max = 42

print(singleton.max) // 42

当需要在另一个类中使用单例时,只需在另一个类中执行此操作:

let otherReferenceToTheSameSingleton = Globals.sharedInstance

按照Martin R和Caleb的评论进行更新:
我已将初始化程序设为私有。它在其他Swift文件中阻止的初始化Globals(),从而只能通过使用来强制此类充当单例Globals.sharedInstance

2020-07-07