如何快速创建单例类? [复制]

Posted

技术标签:

【中文标题】如何快速创建单例类? [复制]【英文标题】:How to create a singleton class in swift? [duplicate] 【发布时间】:2015-10-21 11:18:35 【问题描述】:

我需要在 Swift 中创建一个单例类。谁能帮我写代码?我已经知道单例类在创建通用代码方面非常有帮助。

【问题讨论】:

这里是重复的。 ***.com/questions/24024549/… 【参考方案1】:

在 Swift 中创建单例类的方法有很多。我正在与您分享其中一种实现方式。

在单例类中编写以下代码。

import UIKit

final class GlobalData: NSObject 
   static let sharedInstance = GlobalData()

   private override init()  

   func foo()  

从其他类访问单例类引用:

let glblData = GlobalData.sharedInstance

OR 直接访问方法

GlobalData.sharedInstance.foo()

现在我们可以使用 glblData 作为单例类的引用。

【讨论】:

重写init并将其设为私有也是一个好主意,即:priviate init() ,这样就无法创建另一个实例。 (你不想要单例本身和多个实例) 如果有人在代码的其他地方写了 let data = GlobalData() 怎么办?这将创建该类的另一个实例,因此违反了单例,我们应该将其构造函数设为私有以跟随单例。【参考方案2】:
class Singleton  
   static let sharedInstance = Singleton()

【讨论】:

单例类需要私有构造函数(init)。所以这意味着你不能通过 let obj = Singleton() 创建更多的“Singleton”类对象。您必须将其构造函数私有化。 不,它不是单例类,您可以再次创建单例类的实例。单例类的意思是“整个应用程序中的单个类实例”【参考方案3】:

您可以创建各种 Singleton。下面是最简单最通用的 Singleton 类的代码:

class Singleton 
   static let sharedInstance = Singleton()

【讨论】:

这些是 Swift 1.2 之前的旧方法 - @phnmnn 是定义单例的最简单(且不易出错)的方法 不,它不是单例类,您可以再次创建单例类的实例。单例类的意思是“整个应用程序中的单个类实例”

以上是关于如何快速创建单例类? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

单例类可以有非单例依赖吗? [复制]

如何创建一个完美的单例模式

单例类和静态类的区别? [复制]

单例类与静态方法和字段? [复制]

如何停止订阅单例类的流?

单例设计模式