对比Swift和Objective_C中单例的写法

来源:互联网 发布:淘宝哪个祛痘产品好 编辑:程序博客网 时间:2024/05/03 00:22

创建一个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}
0 0
原创粉丝点击