OC中单例模式的实现:
+ (PeriodicElements *)sharedPeriodicElements
{
@synchronized(self) {
static dispatch_once_t pred;
dispatch_once(&pred, ^{ sharedPeriodicElementsInstance = [[self alloc] init]; });
}
return sharedPeriodicElementsInstance;
}
+ (id)allocWithZone:(NSZone *)zone {
@synchronized(self) {
if (sharedPeriodicElementsInstance == nil) {
sharedPeriodicElementsInstance = [super allocWithZone:zone];
return sharedPeriodicElementsInstance; // assignment and return on first allocation
}
}
return nil; //on subsequent allocation attempts return nil
}
- (id)copyWithZone:(NSZone *)zone {
return self;
}