Swift单例

2016-09-01  本文已影响25人  南飞孤鸿

单例

单例的用途什么的就不必再重复说,直接上干货
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
    }
}

上一篇 下一篇

猜你喜欢

热点阅读