Swift version: 5.2
Singletons are objects that should only ever be created once, then shared everywhere they need to be used. They are common on Apple’s platforms: FileManager
, UserDefaults
, UIApplication
, and UIAccelerometer
are all mostly used through their singleton implementations.
The basic implementation of a Swift singleton looks like this:
struct Settings {
static let shared = Settings()
var username: String?
private init() { }
}
Adding an initializer to the Settings
struct automatically disables the default memberwise initializer, and it’s marked private
so that it also can’t be called from outside the class. However, the struct creates an instance of itself as a static variable, which means the only instance of the Settings
struct is the one it created: Settings.shared
.
SPONSORED Would you describe yourself as knowledgeable, but struggling when you have to come up with your own code? Fernando Olivares has a new book containing iOS rules you can immediately apply to your coding habits to see dramatic improvements, while also teaching applied programming fundamentals seen in refactored code from published apps.
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 8.0 – learn more in my book Swift Design Patterns
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.