Ryan Ryan -5 years ago 266
iOS Question

Create singleton using GCD's dispatch_once in Objective C

If you can target iOS 4.0 or above

Using GCD, is it the best way to create singleton in Objective C (thread safe)?

+ (instancetype)sharedInstance
static dispatch_once_t once;
static id sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc] init];
return sharedInstance;

Answer Source

This is a perfectly acceptable and thread-safe way to create an instance of your class. It may not technically be a "singleton" (in that there can only ever be 1 of these objects), but as long as you only use the [Foo sharedFoo] method to access the object, this is good enough.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download