chevron-up bell reply instagram twitter2 feed3 finder search-25px-p0

Singleton in Objective-C/Swift

2017-05-18

What is behind the Singleton?

Singleton: Instantiation of a class to ONLY one object

Features of Singleton:

  1. One class only can have only one instance;
  2. It must can create this instance automatically;
  3. This instance must be provided to other objects.

Benefits of Singleton:

All objects can only have one instance. In other words, all the instances, no matter how they were created, they have the same memory address. In practise, we want singleton class to manage our database read/write, file IO, to make sure the data integrity.

As we know, there are three Options to create an instance:

Option 1. using alloc and init
Option 2. using static method. A way such as [UIApplication sharedApplication] to create a new instance.
Option 3. copying from an existing object

For example, create a custom class named Item, and implement its singleton method as:

[gist https://gist.github.com/arkilis/989f99cfc0571a081608f1a3a5064faa/]

In the code:

  • Remember copyWithZone method must be override when you want to do the copy on object
  • allocWithZone is called when you create an instance by alloc and init
  • When you are using multi-threading, singleton instance should be avoided created multiple times.

Another way for you to create a singleton is using use GCD:

[gist https://gist.github.com/arkilis/c3a51a4ef976ebda5c09cdfa33c5d6bd/]


Updated: Singleton in Swift


Reference:

arkilis

Comments: