如何快速创建单例类? [复制]
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 是定义单例的最简单(且不易出错)的方法 不,它不是单例类,您可以再次创建单例类的实例。单例类的意思是“整个应用程序中的单个类实例”以上是关于如何快速创建单例类? [复制]的主要内容,如果未能解决你的问题,请参考以下文章