To implement a singleton class in objective-c, you need to do at least the following four steps:
1, for a singleton object to implement a static instance, and initialize, and then set to nil,
2. Implement an instance construction method to check if the static instance declared above is nil, and if it is new and returns an instance of this class,
3, rewrite the Allocwithzone method, to ensure that other people directly use Alloc and Init to try to gain a new strength when the time does not produce a new instance,
4, the appropriate implementation of Allocwithezone,copywithzone,release and Autorelease.
The following is a simple example:
static xylocationmanager *sharedinstance = nil;+ (xylocationmanager *) sharedinstance{ static dispatch_once_t predicate; Dispatch_once (&predicate, ^{ if (sharedinstance == nil) { sharedinstance = [[self alloc] init]; } }); return sharedinstance;} + (ID) Allocwithzone: (nszone *) zone { @synchronized ( Self) { if (Sharedinstance == nil) { sharedinstance = [super allocwithzone:zone]; } return sharedinstance; } return nil;} - (ID) Copywithzone: (nszone *) zone { return Self;} - (ID) init { @synchronized (self) { self = [super init]; return self; }}
iOS single-instance creation