スレッドセーフなシングルトン デザイン パターンの更新バージョンを取得しようとしています。これが私が知っている1つのバージョンです。ただし、iOS6で動作させることはできません
これが私がやろうとしていることです:
これが私のクラスメソッドです
+(id)getSingleton
{
static dispatch_once_t pred;
static EntryContainerSingleton *entriesSingleton = nil;
dispatch_once(&pred, ^{
entriesSingleton = [[super alloc] init];
});
return entriesSingleton;
}
+(id)alloc
{
@synchronized([EntryContainerSingleton class])
{
NSLog(@"inside alloc of EntryContainerSingleton");
ERROR >>>>> NSAssert(entriesSingleton == nil, @"Attempted to allocate a second instance of a singleton.");
ERROR >>>>> entriesSingleton = [super alloc];
ERROR >>>>> return entriesSingleton;
}
return nil;
}
-(id)init
{
self = [super init];
......Some custom INitialization
return self;
}
このコードは、上記のエラーをスローします。エラーメッセージには、宣言されていない識別子の使用が示されています。さらに、上記のリンクはの使用を推奨しています
[[allocWithZone:nil] init]
このように使用すると文句を言います
+(id)allocWithZone:(NSZone*)zone
{
return [self instance];
}
それを機能させるために何時間も試みた後。誰かがこれを正しく行う方法を指摘できれば素晴らしいでしょう。私はグーグルで多くの時間を費やしましたが、完全な実装例は見つかりませんでした。
ありがとう