Swift3.0 单例实战

概述

整个应用生命周期中,只存在唯一一个实例对象的类被称作单例,所以的模块共同使用这一个对象的设计叫做单例模式

单例模式的特点和创建方式:

  • 实例对象唯一,所以多个模块共同使用保证了数据唯一性。
  • 有较强的灵活性。
  • final关键字修饰的class、var、func标示不可被操作,继承,重写非常适合优化单例。
  • Swift3.0开始放弃了dispatch_once,创建单例方式有:
final class LLNetwork: NSObject {
    static let shareInstace = LLNetwork.init()
    // 保证只有当前才能访问
    private override init(){}
}

OC单例

  • 方法一
+ (nonnull instancetype)sharedInstance {
    static id instance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[self alloc] init];
    });
    return instance;
}
  • 方法二
+ (nonnull instancetype)sharedInstance {
    static id instance = nil;
    @synchronized (self) { //保证线程安全
        if (!instance) {
            instance = [[self alloc] init];
        }
    }
    return instance;
}

总结

单例保证了数据在应用运行期间的唯一性,减少了重复内存的损耗,如果单例本身内存占用过大时,要重新考虑这个模式是否适合了。另一方面,单例的访问也存在着多线程安全的问题,这需要我们合理的使用线程锁来保证单例的安全性了。

你可能感兴趣的:(Swift3.0 单例实战)