【发布时间】:2012-06-21 18:49:06
【问题描述】:
我有一个单例,想创建一个内部标志变量,该变量应该表明单例已“释放”,当我得到单例实例时,它应该重新初始化。
对于这种情况,我决定使用静态变量
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;
}
我对这种情况的理解可能有误,请为我澄清一下。
【问题讨论】:
-
你的意思是
NO在你发送destroy? -
你手动调用destroy吗?因为我想否则该对象将永远不会被销毁
-
Josh Caswell,是的,发送
destroy后,它的值为NO。我仅在上述两种情况下更改“wasReleased”的值。我在destroy中检查wasReleased的值,所以这是我所期望的YES,但之后不是。 Joerg Simon,是的,我正在手动调用“销毁”,我正在使用断点来确保。
标签: objective-c ios variables static singleton