Swift version: 5.6
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:
class Settings {
static let shared = Settings()
var username: String?
private init() { }
}
Adding a private
initializer is important, because it stops other parts of our code from trying to create a Settings
class instance. However, the class creates its own instance of itself as a static variable, which means the only instance of the Settings
class is the one it created: Settings.shared
.
BUILD THE ULTIMATE PORTFOLIO APP Most Swift tutorials help you solve one specific problem, but in my Ultimate Portfolio App series I show you how to get all the best practices into a single app: architecture, testing, performance, accessibility, localization, project organization, and so much more, all while building a SwiftUI app that works on iOS, macOS and watchOS.
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.