Ryan Ryan - 4 months ago 19
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

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.

Comments