Understanding Singleton in Swift(了解SWIFT中的Singleton)
问题描述
我正在尝试在SWIFT中创建一个Singleton,这就是我到目前为止所做的
class Global {
class var sharedInstance:Global {
struct singleton {
static let instance:Global = Global()
}
return singleton.instance
}
}
var a = Global.sharedInstance
var b = Global()
if a === b {
println("Pointing to Same Instance")
}
else {
println("Pointing to different instance")
}
我已经使用计算类型属性创建了一个Singleton(从另一个堆栈溢出问题中了解到了这一点)。到目前为止,输出是"指向不同的实例"。
我要查找的是上面示例中的"a"和"b",它们指向全局类的不同实例,这打破了单例的特点。如何使上例中的"a"和"b"指向类的同一实例。谢谢
推荐答案
此模式不能保证Global
类永远只有一个实例。它只允许任何人通过sharedinstance
属性访问Global
的单个公共实例。
因此Global()
声明了Global
类的新实例。但是Global.sharedinstance
不会创建Global
的新实例,而只是获取预先创建的实例(即在任何人第一次访问它时创建)。
(如果将b
的声明更改为var b = Global.sharedinstance
,您将看到它确认a
和b
指向同一实例。)
如果要禁止创建Global
的更多实例,请将其init
设为私有:
private init() { }
但请记住,您仍可以从声明它的文件中创建其他Globals
,因此如果您在游乐场或单文件测试项目中执行上述操作,您将看不到任何效果。
这篇关于了解SWIFT中的Singleton的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!