したがって、私はシングルトンを持っており、Imはこれら2つの実装の違いを理解しようとしています:機能的には、両方でコードを実行しようとしましたが、両方とも機能します
ただし、最初の実装では、[self alloc]が呼び出されず、代わりに[superalloc]が呼び出されることに気付きました。これに少し当惑しています。それはうまくいくようですが、それは少し魔法のように見えるので、誰かが明確にすることができるかどうか疑問に思っています
1番目の方法:
+(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;
}