シングルトンがあり、シングルトンが「リリース」されたことを示す内部フラグ変数を作成したいと考えています。シングルトン インスタンスを取得すると、それ自体を再初期化する必要があります。
この場合、静的変数を使用することにしました
static BOOL wasReleased = NO;
destroy 関数で「YES」に設定します。
- (void)destroy
{
wasReleased = YES;
...release internal singleton resources...
}
しかし、シングルトン インスタンスを取得しようとすると、この変数の値は常に「NO」になるため、解放後に内部リソースが再初期化されることはありません。
+ (MySingleton *)sharedInstance
{
if (sharedCoordinator == nil)
{
sharedCoordinator = [[super alloc] init];
[sharedCoordinator initialize];
}
if (wasReleased)
{
[sharedCoordinator initialize];
}
return sharedCoordinator;
}
この状況についての私の理解は間違っているかもしれません。明確にしてください。