美文网首页
Swift写好一个单例

Swift写好一个单例

作者: godgnay | 来源:发表于2017-06-30 18:25 被阅读120次

新项目要上Swift了虽然一直在期待,但等到真正用的时候,哎,你懂的。

今天我们要实现一个最基础的设计模式中单例,分为一下几种:

// MARK: -单例1 最简单最便捷的方案,由于历史原因,曾经是非线程安全的,但是现在是了。理论上这是最佳实践

static let shared1Instance = JSBUserInfoManager()

// MARK: -单例2 第一种方案的思想的保险实践,也是兼容Swift历史迭代的产物。

class var shared2Instance:JSBUserInfoManager{
struct Static {
static let instance = JSBUserInfoManager()
}
returnStatic.instance
}

// MARK: -单例3 目前Swift3是移除了dispatch_once_t,进一步验证了不需要自己实
现OC那样的单例。

class var shared3Instance:JSBUserInfoManager{
struct Static {
static var onceToken:dispatch_once_t
static var instance:JSBUserInfoManager? =nil
}

dispatch_once(&Static.onceToken) {
Static.instance = JSBUserInfoManager()
}
returnStatic.instance!
}

// MARK: -单例4 这个是非线程安全的,如果不需要多线程可以用,但是谁能笃定不需要呢?

private static var shared4:JSBUserInfoManager? =nil
class func shared4Instance() ->JSBUserInfoManager{
if(shared4 ==nil) {
shared4 = JSBUserInfoManager()
}
returnshared4!
}

// MARK: -单例5 这个是Swift3的最佳实践了,仔细看看UIApplication貌似就这么做的。

protocol Singleton:class{
static var shared5Instance:Self{get}
}
final class DemoSingle:Singleton{
static let sharedInstance = DemoSingle()
}

相关文章

  • swift语法-14单例

    swift语法-14单例 OC中单例 Swift中单例 简写 Swift中最长用的方法

  • 单例模式的书写

    ARC OC 中的单例 根据OC单例 改写成 Swift 中的单例 OC调用swift,需要#import "单例...

  • 单例

    内存中只有一个对象实例 提供一个全局访问点 OC中的单例 swift中的单例 swift改进过的单例

  • iOS - 单例创建

    Swift创建单例 代码如下:Swift5 对应OC创建单例

  • 单例

    普通的 GCD单例 swift单例

  • Swift写好一个单例

    新项目要上Swift了虽然一直在期待,但等到真正用的时候,哎,你懂的。 今天我们要实现一个最基础的设计模式中单例,...

  • iOS 单例

    Objective-C 单例宏 Swift 单例声明

  • Swift中的单例

    转战swift有几天了,接触到了swift中的单例,下面介绍一下swift中的单例: 仿照OC中的单例的写法,写一...

  • 单例

    //单例 // Swift 1.2后,可以使用类变量 // Swift 1.2之前单例的写法 /* class M...

  • Swift的单例模式及如何处理并发访问

    Swift的单例模式 Swift有两种方式实现单例模式 1、全局常量 2、类型常量 处理单例模式的并发访问 1、多...

网友评论

      本文标题:Swift写好一个单例

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