您可以通过多种方式创建单例。我想知道这之间哪个更好。
+(ServerConnection*)shared{
static dispatch_once_t pred=0;
__strong static id _sharedObject = nil;
dispatch_once(&pred, ^{
_sharedObject = [[self alloc] init]; // or some other init method
});
return _sharedObject;
}
我可以看到这编译成非常快的东西。我认为检查谓词将是另一个函数调用。另一个是:
+(ServerConnection*)shared{
static ServerConnection* connection=nil;
if (connection==nil) {
connection=[[ServerConnection alloc] init];
}
return connection;
}
两者之间有什么重大区别吗?我知道这些可能足够相似,不必担心。但只是想知道。