Swift与OC单例
首先是Objective-C的单例:
@interface MyObject: NSObject @end @implementation MyObject + (instancetype)sharedInstance { static MyObject *sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [[MyObject alloc] init]; }); return sharedInstance; } @end
当然,可以按照OC的格式来写swift的单例,但是这并没有什么意义。
使用struct来写的Swift单例:
class MyObject { class var sharedInstance: MyObject { struct Static { static var onceToken:dispatch_once_t = 0 static var instance:MyObject? = nil } dispatch_once(&Static.onceToken, { () -> Void in Static.instance = MyObject() }) return Static.instance! } }
Swift的单例:
//全局单例 private let sharedInstance = MyObject() class MyObject { //单行单例 static let sharedInstance = MyObject() }
很简单吧。 -_-
浙公网安备 33010602011771号