static BlockBackground *_sharedInstance = nil; + (BlockBackground*)sharedInstance { if (_sharedInstance != nil) { return _sharedInstance; } @synchronized(self) { if (_sharedInstance == nil) { _sharedInstance = [[self alloc] init]; } } return _sharedInstance; } + (id)allocWithZone:(NSZone*)zone { @synchronized(self) { if (_sharedInstance == nil) { _sharedInstance = [super allocWithZone:zone]; return _sharedInstance; } } NSAssert(NO, @ "[BlockBackground alloc] explicitly called on singleton class."); return nil; } - (id)copyWithZone:(NSZone*)zone { return self; } - (id)retain { return self; } - (unsigned)retainCount { return UINT_MAX; } - (oneway void)release { } - (id)autorelease { return self; }