所以我有一个单例,我试图理解这两种实现之间的区别:从功能上讲,我尝试用它们运行我的代码,它们都可以工作
但是,我注意到在第一个实现中没有调用 [self alloc],而是调用 [super alloc]。我对此有点困惑。它似乎有效,但似乎有点神奇,所以我想知道是否有人可以澄清
第一种方式:
+(id)getSingleton
{
static dispatch_once_t pred;
dispatch_once(&pred, ^{
locMgrSingleton = [[super alloc] init];
});
return locMgrSingleton;
}
其他方式
+(id)getSingleton
{
@synchronized(self)
{
if (locMgrSingleton == nil)
{
locMgrSingleton = [[self alloc]init];
NSLog(@"Created a new locMgrSingleton");
}
else
{
NSLog(@"locMgrSingleton exists");
}
}
return locMgrSingleton;
}