OC 中单例的使用
+ (instancetype)sharedManager { static id instance; static dispatch_once_t onceToken; NSLog(@"%ld", onceToken); dispatch_once(&onceToken, ^{ instance = [[self alloc] init]; }); return instance; }
swift 中单例的使用
static var instance: NetworkTools? static var token: dispatch_once_t = 0 /// 在 swift 中类变量不能是存储型变量 class func sharedSoundTools() -> SoundTools { dispatch_once(&token) { () -> Void in instance = SoundTools() } return instance! } //不过!在 Swift 中 let 本身就是线程安全的
简单的单例写法
改进过的单例代码 private static let instance = NetworkTools() /// 在 swift 中类变量不能是存储型变量 class var sharedNetworkTools: NetworkTools { return instance } 单例其实还可以更简单 static let sharedSoundTools = SoundTools()