Swift_Singleton

原创 2015年11月18日 21:16:53

单例设计模式

开发项目的时候,有时候需要很多工具类,这时候单例的使用就尤为重要。在OC中,单例的写法想必大家很清晰了,在这里给大家介绍下Swift中几种单例的写法:

最简单的写法

static var instance: DBHelper? = nil
static func sharedInstance() -> DBHelper {

    if instance == nil {
        instance = DBHelper()
    }

    return instance!
}

这种写法的缺陷在于,没有处理线程安全的问题


使用GCD

static var sharedInstance: DBHelper {

    struct Static {
        static var onceToken : dispatch_once_t = 0
        static var instance : DBHelper? = nil
    }

    dispatch_once(&Static.onceToken) {
        Static.instance = DBHelper()
    }

    return Static.instance!
}

使用GCD可以帮助我们处理线程安全的问题,但缺陷在于写法太麻烦


使用let变量简单的写法

class var sharedInstance: DBHelper {

    struct Static {
        static let instance: DBHelper = DBHelper()
    }

    return Static.instance
}

使用常量来实现单例对象,虽然没有问题,但是写法还不够简洁


最方便的写法

private static let instance = DBHelper()
class var sharedInstance: DBHelper {

    return instance
}

最吊在这里,如果没有特殊的去求,这种写法足够了,也非常的方便


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Swift百万线程攻破单例(Singleton)模式

在上一篇文章我们给出了单例的设计模式,直接给出了线程安全的实现方法。单例的实现有多种方法,如下面: class SwiftSingleton {       class var shared: Sw...

swift (Singleton)模式

(Singleton)模式

Swift设计模式之单例(SINGLETON)

Swift是一门新的语言,每一门语言都有其特点,如何在Swift下实现单例设计模式呢?...
  • g1jun
  • g1jun
  • 2014年06月16日 13:46
  • 4251

swift单例-Singleton以及a declaration cannot be both 'final' and 'dynamic'

参考文章:https://github.com/hpique/SwiftSingleton swift中常用的单例有三种写法: 1、最简单的一种:定义static常量,只执行一次 Approa...

[IOS] Swift设计模式之单例(SINGLETON)

//转载:http://blog.csdn.net/g1jun/article/details/30461205 一、意图 保证一个类公有一个实例,并提供一个访问它的全局访问点。 ...

单例模式(Singleton)的6种实现

  • 2017年11月02日 11:14
  • 1.17MB
  • 下载

设计模式--单例模式【Singleton Pattern】

这个模式是很有意思,而且比较简单,但是我还是要说因为它使用的是如此的广泛,如此的有人缘,单例就是单一、独苗的意思,那什么是独一份呢?你的思维是独一份,除此之外还有什么不能山寨的呢?我们举个比较难复制的...

Common_singleton

  • 2016年05月09日 10:52
  • 777B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Swift_Singleton
举报原因:
原因补充:

(最多只允许输入30个字)