swift语法-14单例
OC中单例
+ (instancetype)shareNetworkTools{
static NetworkTools *_instance;
// onceToken默认等于0, 只要执行一次之后就不等于0了, 原理是通过判断onceToken是否等于0决定是否需要执行block
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_instance = [[NetworkTools alloc] init];
});
return _instance;
}
Swift中单例
class NetworkTools: NSObject {
static var onceToken: dispatch_once_t = 0
static var _instance:NetworkTools?
//class func 相当于OC中的 +开头类方法
class func sharedNetworkTools()->NetworkTools{
dispatch_once(&NetworkTools.onceToken) { () -> Void in
_instance = NetworkTools()
}
return _instance!
}
}
简写
class NetworkTools: NSObject {
static let _instance:NetworkTools = NetworkTools()
//class func 相当于OC中的 +开头类方法
class func sharedNetworkTools()->NetworkTools{
return _instance
}
}
Swift中最长用的方法
class NetworkTools: NSObject {
// 如果在Swift中编写单例, 推荐使用如下写法
//苹果有统一的命名规范, 但凡是单例统一是用shareInstance
static let shareInstance: NetworkTools = NetworkTools()
}
网友评论