对比Swift和Objective_C中单例的写法

创建一个NetWorkTools的类

Objective_C:

NetWorkTools.h中

+ (instancetype)shareNetWorkTools;

NetWorkTools.m中

+ (instancetype)shareNetWorkTools
{
    static id instance;
    static dispatch_once_t oncetoken;
    // oncetoken认等于0,如果是0就会执行block,如果不是0就不会执行
    dispatch_once(&oncetoken,^{
        instance = [[self alloc] init];
    });
    return instance;
}

Swift:

传统写法

// 在Swift中,类方法中是不允许定义静态变量的
 static var once_t: dispatch_once_t = 0
 static var instance: NetWorkTools?

 // 用于获取单例对象的类方法
 class func shareNetWorkTools() -> NetWorkTools{

 dispatch_once(&once_t) { () -> Void in
 instance = NetWorkTools()
 }
 return instance!
 }

简单写法

//Swift中的let是线程安全的,用到时才会创建
static let instance: NetWorkTools = NetWorkTools()
class func shareNetWorkTools() -> NetWorkTools { return instance }

相关文章

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