I need to create a singleton class in Swift. Can anyone help me with the code? I already know that singleton classes are very helpful in creating generic code.
Asked
Active
Viewed 2.1k times
7
-
It's duplicate here. http://stackoverflow.com/questions/24024549/dispatch-once-singleton-model-in-swift – Long Pham Jul 30 '15 at 07:54
3 Answers
19
There are many ways to create a Singleton Class in Swift. I am sharing with you one of the ways to implement this.
Write below code in Singleton Class.
import UIKit
final class GlobalData: NSObject {
static let sharedInstance = GlobalData()
private override init() { }
func foo() { }
}
To access Singleton Class referencefrom other class:
let glblData = GlobalData.sharedInstance
OR access method directly
GlobalData.sharedInstance.foo()
Now we can use glblData as a reference to your singleton Class.

Alok
- 24,880
- 6
- 40
- 67
-
2It is also a good idea to override the init and make it private, ie: `priviate init() { }` so that another instance cannot be created. (You don't want the singleton itself and multiple instances) – micnguyen Aug 16 '18 at 06:37
-
1What if someone writes let data = GlobalData() somewhere else in code?? This will create another instance of the class, hence violating singleton, we should make its constructor private to follow singleton. – Abuzar Amin Dec 17 '18 at 08:35
7
class Singleton {
static let sharedInstance = Singleton()
}

phnmnn
- 12,813
- 11
- 47
- 64
-
1Singleton class required private constructor (init). So it means you can't create more object of class "Singleton" by doing let obj = Singleton(). you must need to private its constructor. – Vasucd Mar 11 '20 at 13:48
-
no its not singleton class, you can create an instance of Singleton class again. Singleton class means "Single instance of class throughout the whole application" – Nirav Hathi Jun 12 '20 at 04:12
4
You can create various Singleton. Below is the code for the simplest and most generic Singleton class:
class Singleton {
static let sharedInstance = Singleton()
}

Nilanshu Jaiswal
- 1,583
- 3
- 23
- 34

Sohil R. Memon
- 9,404
- 1
- 31
- 57
-
1These are old methods prior to Swift 1.2 - @phnmnn is the easiest (and less error prone) way to define singletons – Antonio Jul 30 '15 at 07:56
-
no its not singleton class, you can create an instance of Singleton class again. Singleton class means "Single instance of class throughout the whole application" – Nirav Hathi Jun 12 '20 at 04:13