轉(zhuǎn)戰(zhàn)swift有幾天了,接觸到了swift中的單例,下面介紹一下swift中的單例:
仿照OC中的單例的寫(xiě)法,寫(xiě)一個(gè)常用的網(wǎng)絡(luò)處理單例
class NetworkTools: NSObject {
static var onceToken: dispatch_once_t = 0
static var tools: NetworkTools?
//單例訪問(wèn)的函數(shù)
class func sharedTools() -> NetworkTools {
dispatch_once(&onceToken) { () -> Void in
tools = NetworkTools()
}
return tools!
}
}
上面的寫(xiě)法也是單例,但是沒(méi)有swift范,下面的才是swift中的真正的單例
class NetworkTools: NSObject {
var post: String?
// swift單例的寫(xiě)法
static let networkTools: NetworkTools = {
let network = NetworkTools()
network.post = "Post"
return network
}()
如果在創(chuàng)建單例時(shí)不需要做任何操作的話(huà),你完全可以這樣寫(xiě)
class NetworkTools: NSObject {
var post: String?
static let networkTools: NetworkTools = NetworkTools()
}
調(diào)用時(shí)直接點(diǎn)出來(lái)方法并使用即可
let tools = NetworkTools.networkTools