我创建了一个新文件->swift file
。叫Globals.Swift
然后在那里我做了:
class Globals {
static let sharedInstance = Globals()
init() {
var max=100
}
}
在另一个班级(UIViewcontroller
)中,我想使用它,
Globals.sharedInstance //is going ok
很好,但是当我深入.max
时,我得到了错误。
答案 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
来强制此类表现为单例。