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

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

【问题讨论】:

标签: swift singleton


【解决方案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 是定义单例的最简单(且不易出错)的方法
  • 不,它不是单例类,您可以再次创建单例类的实例。单例类的意思是“整个应用程序中的单个类实例”
猜你喜欢
  • 2015-09-11
  • 2015-08-12
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
  • 2018-11-03
  • 1970-01-01
相关资源
最近更新 更多