Swift 四種實現單例的方式
阿新 • • 發佈:2018-12-29
單例模式
單例模式是設計模式中最簡單的一種,甚至有些模式大師都不稱其為模式,稱其為一種實現技巧,因為設計模式講究物件之間的關係的抽象,而單例模式只有自己一個物件。
當你只需要一個例項的時候需要使用單例,如UIApplication.sharedApplication()
等 ,windows的工作管理員,回收站 都是隻能同時存在一個。
下面看看swift中的幾種實現方式:
1、
import Foundation
class SingleOne {
//單例
static let shareSingleOne = SingleOne()
}
一句話搞定,靜態常理。所有地方用到的都是同一個
2、
import Foundation class SingleTwo { //單例 class func shareSingleTwo()->SingleTwo{ struct Singleton{ static var onceToken : dispatch_once_t = 0 static var single:SingleTwo? } dispatch_once(&Singleton.onceToken,{ Singleton.single=shareSingleTwo() } ) return Singleton.single! } }
使用dispatch_once可以保證其中的程式碼只執行一次
3、
import Foundation
//全域性的常量
let single = SingleThree()
class SingleThree {
class var sharedInstance : SingleThree {
return single
}
}
4、
import Foundation class SingleFour { static var sharedInstance : SingleFour { struct Static { static let instance : SingleFour = SingleFour() } return Static.instance } }
在方法內定義靜態常量