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: 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本身就是线程安全的,所以可以直接用!而且,这样的加载方式也是懒加载,是在第一次使用的时候创建的。
所以在实际用的时候直接用方法二就可以了!

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...