Swift3.0 单例实战

2017-05-24  本文已影响28人  风与鸾

概述

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

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

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;
}

总结

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

上一篇下一篇

猜你喜欢

热点阅读