swift中单例实现

前端之家收集整理的这篇文章主要介绍了swift中单例实现前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
首先,看下OC中一般单例实现:
static NetWorkTool *tool;
+ (
instancetype )shareNetWorkTool {

static dispatch_once_t onceToken;
dispatch_once (&onceToken,^{
tool = [[ self alloc ] init ];
});

return tool ;
}

Swift中一般单例实现:

写法一(这种写法是参考OC中的实现思路):
static var tool: NetworkTool ?
var onceToken: @H_404_92@ dispatch_once_t = 0

class func sharedNetworkTool()-> NetworkTool {

dispatch_once (&onceToken) {
self .tool = NetworkTool ()
}

return tool!
}

但是,其实swift中,单例实现上不必那么麻烦了
写法二:
private static let tool = NetworkTool ()

class func sharedNetworkTool()-> NetworkTool {

return tool
}
就是这么简单,因为在swift中,let本身就是线程安全的,所以可以直接用!而且,这样的加载方式也是懒加载,是在第一次使用的时候创建的。
所以在实际用的时候直接用方法二就可以了!
原文链接:https://www.f2er.com/swift/326815.html

猜你在找的Swift相关文章