首先,看下OC中一般单例实现:
static
NetWorkTool
*tool;
+ ( instancetype )shareNetWorkTool {
static dispatch_once_t oncetoken;
dispatch_once (&oncetoken,^{
tool = [[ self alloc ] init ];
});
return 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!
var oncetoken: dispatch_once_t = 0
class func sharednetworkTool()-> NetworkTool {
dispatch_once (&oncetoken) {
self .tool = NetworkTool ()
}
return tool!
}
但是,其实swift中,单例实现上不必那么麻烦了
写法二:
}
就是这么简单,因为在swift中,let本身就是线程安全的,所以可以直接用!而且,这样的加载方式也是懒加载,是在第一次使用的时候创建的。
所以在实际用的时候直接用方法二就可以了!
原文地址:https://www.jb51.cc/swift/326815.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。