Swift - 单例的创建方法

作者: 小黑Swift | 来源:发表于2016-06-19 15:43 被阅读220次

在爪哇中的单例定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供

class singleClass: NSObject {
    var value = 0
    
    //方式一 全局变量
   static let singleDefault = singleClass()
    
    //方式二 使用GCD -> 单例
   class func shareDefault() -> singleClass {
        struct once {
            static var onceToken: dispatch_once_t = 0
            static var shareSingle:singleClass! = nil
        }
        dispatch_once(&once.onceToken) {
            once.shareSingle = singleClass()
        }
        return once.shareSingle
    }
    
    //方式三 使用结构体 -> 单例
   class func shareDefault2() -> singleClass {
        struct single {
            static var singleDefault = singleClass()
        }
        return single.singleDefault
    }
    
    private override init() {} //防止被再次实例化
}
/*
let single1 = singleClass.singleDefault
let single2 = singleClass.shareDefault()
let single3 = singleClass.shareDefault2()

单例

使用例子:比如在游戏中都有唯一一个游戏管理者统一管理加分之类的,多个的话就会出现数据不同步混淆混乱等

GameManager.Swift

public class GameManager {
    
    public var score = 0
    
    public static let defaultGameManager = GameManager()
    private init() { } //防止被初始化
    
    public func addScore() {
        score += 10
    }
}

-> 下面 gm1 与 gm2 都是指向同一个实例(相对于它的花名),并没有创建新的实例

let gm1 = GameManager.defaultGameManager
gameManager.addScore()
gameManager.score
// = 10

let gm2 = GameManager.defaultGameManager
gm.addScore()
gm.score

// = 20

相关文章

  • 懒加载和单例

    懒加载 声明属性 重写get方法 Swift 单例的创建方式 方式一:创建单例工厂方法(重写alloc完善) 声明...

  • iOS - 单例创建

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

  • swift语法-14单例

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

  • Swift的四种传值方法

    Swift中常用的四种传值方法:单例,单例,闭包(相当于OC的block传值),通知 1单例: 1>.创建单例变量...

  • Swift中单例的创建方法

    不废话,直接看代码: swift中单例的创建非常简单了,以下从不同的角度来创建单例 方法一: let修饰的常量 -...

  • iOS 单例的创建

    Objective-C创建单例 Swift创建单例 确保唯一性 复写allocWithZone、copyWithZ...

  • Swift - 单例的创建方法

    在爪哇中的单例定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供 使用例子:比如在游戏中都有唯一一个游戏管...

  • Swift-5行代码创建单例

    创建单例的方法

  • swift创建单例

    SqliteManager.swift Sqlite_Bridge.h Student.swift ViewCon...

  • swift 单例创建

网友评论

    本文标题:Swift - 单例的创建方法

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