2011-04-07 28 views

回答

3

根據蘋果的文檔上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?

1

暫且做到這一點,將確保單沒有得到發佈:

// 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; 
}