zoukankan      html  css  js  c++  java
  • Swift中的dispatch_once 单例模式

    以下有三种方法实现单例模式,支持懒初始化和线程安全

    • 全局变量
    • 结构
    • dispatch_once

    全局变量:

    这里使用了全局变量而非类变量,是因为不支持类变量

    private let _SingletonSharedInstance = Singleton()
    
    class Singleton  {
        class var sharedInstance : Singleton {
            return _SingletonSharedInstance
        }
    }
    

     结构:

    与类不同,结构可以定义静态变量,通过使用此方法,将静态变量升级为类变量(在支持类变量之前,推荐此方法)

    class Singleton {
        class var sharedInstance : Singleton {
            struct Static {
                static let instance : Singleton = Singleton()
            }
            return Static.instance
        }
    }
    

    dispatch_once:

    传统的OC方法对Swift的接口

    class Singleton {
        class var sharedInstance : Singleton {
            struct Static {
                static var onceToken : dispatch_once_t = 0
                static var instance : Singleton? = nil
            }
            dispatch_once(&Static.onceToken) {
                Static.instance = Singleton()
            }
            return Static.instance!
        }
    }
    

    本文对原文进行整理、翻译

    原文链接

  • 相关阅读:
    iOS testFlight的使用
    Java读书笔记
    Vim编辑器
    seleniumRC测试用例——登录
    自动化测试工具——selenium
    《Oracle从入门到精通》
    WEB服务器相关知识摘录
    oracle表空间与分区表
    Linux 常用命令
    Linux 常见问题
  • 原文地址:https://www.cnblogs.com/sparks/p/3989241.html
Copyright © 2011-2022 走看看