Swift Language Design Patterns - Creational Singleton


Singletons are a frequently used design pattern which consists of a single instance of a class that is shared throughout a program.

In the following example, we create a static property that holds an instance of the Foo class. Remember that a static property is shared between all objects of a class and can't be overwritten by subclassing.

public class Foo
    static let shared = Foo()
    // Used for preventing the class from being instantiated directly
    private init() {}
    func doSomething()
        print("Do something")



Be sure to remember the private initializer:

This makes sure your singletons are truly unique and prevents outside objects from creating their own instances of your class through virtue of access control. Since all objects come with a default public initializer in Swift, you need to override your init and make it private. KrakenDev