单例

 

当实际上Singleton是一个对象,我们不能保证使用者不会使用其他的方法去创建(比如alloc),这个时候他就会创建多个实例,这样就会出现这些无法感知的bug)

 

 

 

@implementation Singleton  
  
static Singleton * sharedSingleton = nil;  
  
+ (Singleton *) sharedInstance  
{  
    if (sharedSingleton == nil) {  
        sharedSingleton = [[super allocWithZone:NULL] init];  
    }  
    return sharedSingleton;  
}  
  
+ (id) allocWithZone:(struct _NSZone *)zone  
{  
    return [[self sharedInstance] retain];  
}  
  
- (id) copyWithZone:(NSZone *) zone  
{  
    return self;  
}  
  
- (id) retain  
{  
    return self;  
}  
  
- (NSUInteger) retainCount  
{  
    return NSUIntegerMax;  
}  
  
  
- (void) release  
{  
    //  
}  
  
- (id) autorelease  
{  
    return self;  
}  
  
@end  

 

posted @ 2015-11-23 21:09  iWillW  阅读(131)  评论(0编辑  收藏  举报