GCD写法
+(Manager *)sharedManager{
static dispatch_once_t predicate;
static Manager * sharedManager;
dispatch_once(&predicate, ^{
sharedManager=[[Manager alloc] init];
});
return sharedManager;
}
不考虑线程安全的问题:
+ (id)sharedInstance {
static testClass *sharedInstance = nil;
if (!sharedInstance) {
sharedInstance = [[self alloc] init];
}
return sharedInstance;
}
加锁之后就会存在 retain ……总之建议第一种方法 一般的项目这种方法可以满足,就是有时候项目需要的额话第一种更安全一点!!!!!
+ (id)sharedInstance {
static testClass *sharedInstance = nil;
@synchronized(self) {
if (!sharedInstance) {
sharedInstance = [[self alloc] init];
}
}
return sharedInstance;
}