美文网首页
Swift中的单例

Swift中的单例

作者: captain_Lu | 来源:发表于2016-09-13 15:28 被阅读24次

    项目开发中往往经常使用单例模式,单例的目的:

    • 内存中只有一个对象实例
    • 提供一个全局访问点

    OC 中的单例写法

    + (instancetype)sharedManager {
        static id instance;
        static dispatch_once_t onceToken;
        NSLog(@"%ld", onceToken);
    //onceToken默认等于0,如果是0就会执行block,如果不是0就不会执行
        dispatch_once(&onceToken, ^{
            instance = [[self alloc] init];
        });
        return instance;
    }
    

    Swift 中的单例

    static var instance: NetworkTools?
    static var token: dispatch_once_t = 0
    /// 在 swift 中类变量不能是存储型变量
    class var sharedNetworkTools: NetworkTools {
        dispatch_once(&token, { () -> Void in
            self.instance = NetworkTools()
        })
        return self.instance!
    }
    

    不过!在 Swift 中 let 本身就是线程安全的

    改进过的单例代码

    private static let instance = NetworkTools()
    /// 在 swift 中类变量不能是存储型变量
    class var sharedNetworkTools: NetworkTools {
        return instance
    }
    

    相关文章

      网友评论

          本文标题:Swift中的单例

          本文链接:https://www.haomeiwen.com/subject/fbvmettx.html