このような 1 トンを ARC 用に作成しました。
+ (MyClass *)sharedInstance {
static MyClass *sharedSpeaker = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedSpeaker = [[self alloc] init];
});
return sharedSpeaker;
}
- (id)init {
if (self = [super init]) {
}
return self;
}
しかし、ここでは次のようなインスタンスを作成しています:
id speaker3 = [[MyClass alloc] init];
id speaker = [MyClass sharedInstance];
id speaker2 = [[MyClass alloc] init];
NSLog(@"Speaker 1= %@ \n speaker 2 = %@\n Speaker3 = %@",speaker,speaker2,speaker3);`
次のように出力されました:
Speaker 1= <MyClass : 0xa45f5e0>
speaker 2 = <MyClass : 0xa461740>
Speaker3 = <MyClass : 0xa4529e0>
これは望ましい動作のように見えます。ライブラリ内のシングルトンをユーザーに提供しているときにこれを停止する方法。彼が新しいインスタンスを作成するのをブロックする必要があります。グローバルにする場合、静的グローバルにする必要がありますか?彼は同じ名前のグローバル変数を作成できず、競合が発生します。それで、どのメンバーもこれについて解決策を提供できますか?