我知道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”方法是普遍接受的方法;有各种不同的方式来实现相同的事情实际上并没有帮助。 – gnasher729
我不明白你为什么不能配置这个类。你可以在+ load,+ initialize(在创建sharedInstance之前)配置它。在适当的时候,您甚至可以稍后在应用生命周期中更改一些sharedInstance属性。也许我只是不明白你的意思,当然dispatch_once方法也能工作。 – aLevelOfIndirection