單例
單例的用途什么的就不必再重復(fù)說登舞,直接上干貨
Swift中單例相比OC簡單很多菲驴,一行代碼可以搞定單例的生成
class Peson: NSObject{
// Swift中的let是線程安全的
static let ps : Peson = Peson()
// 生成單例的類方法
class func shareInstance() -> Peson {
return ps
}
// 將init方法私有化(取消對象外部的init方法)道批,保證對象單一
// 與OC不用错英,沒有allocWithZone這個(gè)方法,不能從源頭控制init方法創(chuàng)建出來的對象單一屹徘,如果要保證絕對單例走趋,就必須吧init方法私有化
private override init() {}
}
與OC類似,為了保證對象的絕對單一噪伊,我們應(yīng)該重寫CopyWithZone這個(gè)方法簿煌,
//遵守NSCopying協(xié)議,重寫Copy方法鉴吹,實(shí)現(xiàn)copy對象也是單例
extension Peson : NSCopying {
func copyWithZone(zone: NSZone) -> AnyObject {
return Peson.ps
}
}