0
如何確保我的單例對象在多個開發人員在工作時不會因錯誤而被釋放?我們可以處理我的程序嗎?如何禁止單身物件釋放?
如何確保我的單例對象在多個開發人員在工作時不會因錯誤而被釋放?我們可以處理我的程序嗎?如何禁止單身物件釋放?
根據蘋果的文檔上Creating a Singleton Instance:
static MyGizmoClass *sharedGizmoManager = nil;
+ (MyGizmoClass*)sharedManager
{
if (sharedGizmoManager == nil) {
sharedGizmoManager = [[super allocWithZone:NULL] init];
}
return sharedGizmoManager;
}
+ (id)allocWithZone:(NSZone *)zone
{
return [[self sharedManager] retain];
}
- (id)copyWithZone:(NSZone *)zone
{
return self;
}
- (id)retain
{
return self;
}
- (NSUInteger)retainCount
{
return NSUIntegerMax;
}
- (oneway void)release
{
//do nothing
}
- (id)autorelease
{
return self;
}
你也可能需要閱讀的答案:What should my Objective-C singleton look like?
暫且做到這一點,將確保單沒有得到發佈:
// This function is empty, as we don't want to let the user release this object.
- (oneway void)release {
}
//Do nothing, other than return the shared instance - as this is expected from autorelease.
- (id)autorelease {
return self;
}