单例
单例的用途什么的就不必再重复说,直接上干货
Swift中单例相比OC简单很多,一行代码可以搞定单例的生成
class Peson: NSObject{
// Swift中的let是线程安全的
static let ps : Peson = Peson()
// 生成单例的类方法
class func shareInstance() -> Peson {
return ps
}
// 将init方法私有化(取消对象外部的init方法),保证对象单一
// 与OC不用,没有allocWithZone这个方法,不能从源头控制init方法创建出来的对象单一,如果要保证绝对单例,就必须吧init方法私有化
private override init() {}
}
与OC类似,为了保证对象的绝对单一,我们应该重写CopyWithZone这个方法,
//遵守NSCopying协议,重写Copy方法,实现copy对象也是单例
extension Peson : NSCopying {
func copyWithZone(zone: NSZone) -> AnyObject {
return Peson.ps
}
}
网友评论