我正在尝试在 SWIFT 中创建一个单例,这就是我到目前为止所做的
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")
}
我已经使用计算类型属性来创建一个单例(从另一个 stackoverflow 问题中了解到)。到目前为止,输出是“指向不同的实例”。
我正在寻找的是上面示例中的“a”和“b”指向 GLOBAL 类的不同实例,这打破了单例的要点。如何使上例中的“a”和“b”指向该类的同一个实例。
谢谢
这种模式并不保证只有一个实例Global
班级。它只允许任何人访问单个公共实例Global
通过其sharedinstance
财产。
So Global()
声明一个新实例Global
班级。但Global.sharedinstance
不创建新实例Global
,只获取预先创建的一个(即在任何人第一次访问它时创建的)。
(如果您更改您的声明b
读书var b = Global.sharedinstance
你会看到它证实了这一点a
and b
都指向同一个实例。)
如果您想禁止创建更多实例Global
,使其init
私人的:
private init() { }
但请记住,您仍然可以创建其他Globals
从声明它的文件中,所以如果您在游乐场或单文件测试项目中执行上述操作,您将看不到任何效果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)