iOS Swift中如何创建单例

单例就是该类在系统中只有一个实例,对比一下OC的单例创建方式来看一下Swift的单例是如何写的。

OC中的单例是这样的

+ (instancetype)shareManager
{
    static id instance;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[self alloc] init];
    });
    return instance;
}

onceToken默认等于0, 如果是0就会执行block, 如果不是0就不会执行,通常执行完之后就变为-1

类比一下OC,Swift中的单例也可以这样写

方法一

// 在Swift中, 类方法中是不允许定义静态变量的
    static var once_t: dispatch_once_t = 0
    
    static var instance: Manager?
    
    /// 用于获取单例对象的类方法
    class func shareManager() -> Manager{
        
        dispatch_once(&once_t) { () -> Void in
            instance = Manager()
        }
        
        return instance!
    }


方法二

Swift中的let是线程安全的,有更简单创建单例的方法,这种方法更推荐。

static let instance: Manager = Manager()
    
    class func shareManager() -> Manager {
        return instance
    }


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容