我知道两种方式。什么是更好的?还有什么比2种方法更好的方法吗?
+ (MyClass *)shared {
/*
static MyClass *sharedInstance = nil;
@synchronized(self) {
if (sharedInstance == nil) {
sharedInstance = [[self alloc] init];
}
}
return sharedInstance;
*/
/*
static dispatch_once_t pred;
static MyClass *sharedInstance = nil;
dispatch_once(&pred, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
*/
}
最佳答案
这是设置共享实例的另一种方法。线程安全由运行时处理,并且代码非常简单。通常这就是我设置单身人士的方式。如果单例对象使用了大量资源,但可能没有使用,那么dispatch_once方法效果很好。
static MyClass *sharedInstance = nil;
+ (void) initialize
{
sharedInstance = [[MyClass alloc] init];
}
+ (MyClass*)sharedInstance
{
return sharedInstance;
}