第一种:声明一个私有变量,然后用类属性返回这个私有变量
class Person {
private let _person = Person()
class var sharedInstance :Person {
return Person()
}
}
第二种:直接用类属性返回这个单例,因为类属性不能只能存储计算属性,所以用结构体的静态变量中转一下,当然这个结构体也可以写在类属性的外面
class Person {
class var sharedInstance :Person {
struct Static {
static let instance :Person = Person()
}
return Static.instance
}
}
}
第三种:实现思路和第二种差不多,不过使用GCD实现的
class Person {
class var sharedInstance :Person {
struct Static {
static var onceToken :dispatch_once_t = 0
static var instance :Person? = nil
}
dispatch_once(&Static.onceToken) {
Static.instance = Person()
}
return Static.instance!
}
}