我有一个单例,想要创建一个内部标志变量,该变量应该指示单例已“释放”,并且当我获得单例实例时,它应该重新初始化自身。
对于这种情况,我决定使用静态变量
static BOOL wasReleased = NO;
并在销毁函数中将其设置为“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;
}
我对这种情况的理解可能是错误的,请为我澄清一下。