很难在swift中实现一个简单的单例

时间:2016-03-15 12:53:19

标签: swift

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

class Globals {

    static let sharedInstance = Globals()

    init() {
        var max=100
    }

}

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

Globals.sharedInstance //is going ok

很好,但是当我深入.max时,我得到了错误。

1 个答案:

答案 0 :(得分:9)

你不能只在初始化中拥有var = xxx。该变量必须在类顶级声明。

使用单身人士的例子:

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来强制此类表现为单例。