- Swift 中使用單行單例法來(lái)創(chuàng)建單例笛辟,代碼如下:
class MyClass: NSObject {
static let shareInstance = MyClass()
private override init() {}
}
通過(guò)分析 stack trace 后發(fā)現(xiàn),執(zhí)行下面代碼時(shí)序苏,調(diào)用了 dispatch_once_f手幢,然后又調(diào)用了 _dispatch_client_callout,由此說(shuō)明這里是線程安全的忱详。
static let shareInstance = MyClass()
使用私有的方式重寫 init 方法围来,是為了避免其他類直接調(diào)用單例類的 init 方法獲得新的對(duì)象。