美文网首页
Swift Singleton Theory

Swift Singleton Theory

作者: Joseph_Zheng | 来源:发表于2016-06-12 14:43 被阅读24次

    在OC中我们经常这样写单例:

    @implemention MyManager 

    + (id)sharedManager {

        static MyManager *shareInstance = nil;

        static dispatch_once_t onceToken;

        dispatch_once(&onceTokec, ^{

            shareInstance = [[self alloc]  init];

        });

        return shareInstance;

    }

    使用dispatch_once_t来保证单例代码在生命周期内只被调用一次。

    然而在Swift中,如下方式是最佳的单例实现方式:

    private let  sharedInstance = MyManager()

    为什么简单的一个全局变量就可行呢?如何保证只调用了一次没有冲突呢?

    The lazy initializer for a global variable (also for static members of structs and enums) is run the first time that global is accessed, and is launched as dispatch_once to make sure that the initialization is atomic. This enables a cool way to use dispatch_once in your code: just declare a global variable with an initializer and mark it private.

    Swift中的全局变量在初始化的时候都会使用 dispatch_once来保证原子性。所以Swift天生支持单例模式,简单方便。

    developer.apple.com/swift/blog/

    相关文章

      网友评论

          本文标题:Swift Singleton Theory

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