How do I implement an Objective-C singleton that is compatible with ARC?
In exactly the same way that you (should) have been doing it already: + (instancetype)sharedInstance { static MyClass *sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [[MyClass alloc] init]; // Do any other initialisation stuff here }); return sharedInstance; }