Question
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.