// Creating a Singleton Instance
Static MyGizmoClass * sharedGizmoManager = nil; + (MyGizmoClass *) sharedManager {if (sharedGizmoManager = nil) {sharedGizmoManager = [[super allocWithZone: NULL] init];} return callback ;} + (id) allocWithZone :( NSZone *) zone {return [[self sharedManager] retain];}-(id) copyWithZone :( NSZone *) zone {return self;}-(id) retain {return self;}-(NSUInteger) retainCount {return NSUIntegerMax; // denotes an object that cannot be released}-(void) release {// do nothing}-(id) autorelease {return self ;}
A modern version of code, which utilizes GCD (Grand Central Dispatch) and ARC (Automatic Reference Counting)
// ARC Enabled
+ (Id) sharedInstance {static dispatch_once_t pred = 0; _ strong static id _ Empty dobject = nil; dispatch_once (& pred, ^ {_ Empty dobject = [[self alloc] init]; // or some other init method}); return _ export dobject ;}