定义一个私有的类的实例变量并使用闭包初始化和初始化方法,类的实例变量设置为static类型
private static let singleClass:YxhClass = {
let myClass = YxhClass(string: "yxh")
return myClass
}()
var myStr:String
var a:Int = 0
private init(string:String) {
self.myStr = string
}
此时已经再写一个类方法将上面的myClass分享出去就可以获取到这个单例了。
class func shareSingle() ->YxhClass{
return singleClass
}
最后可以打印出地址验证是否是同一个实例
func addA(){
self.a = self.a + 1
NSLog("%d+", self.a)
printAddress(values: self as AnyObject)
}
func printAddress(values:AnyObject...){
for value in values {
print(Unmanaged.passUnretained(value).toOpaque())
}
line()
}
func line(){
print("----------------")
}
结果
可以看到是同一个地址。