标签:
GCD单例:
+ (id)sharedInstance {
static ModulesManager * sharedManager = nil;
static dispatch_once_t once;
dispatch_once(&once, ^{
sharedManager = [[self alloc] init];
});
return sharedManager;
}
为了防止外界通过alloc方法申请到另一块内存,只生成单个实例,需要覆盖父类的allocWithZone方法 需要注意线程安全
+(id)allocWithZone:(struct _NSZone *)zone{
@synchronized(self){
if (sharedSingleton == nil) {
sharedSingleton = [super allocWithZone:zone];
}
}
return sharedSingleton;
}
+(id)copyWithZone:(struct _NSZone *)zone{
return sharedSingleton;
}
标签:
原文地址:http://www.cnblogs.com/SimonGao/p/4831930.html