我有一个单例类,它是整个项目中只有一次的分配对象。下面的代码行很少。
宣言...
....
MyClassName *classObject = nil
在init方法中,代码如下所示。
-(id) init(){
self = [super init];
if(classObject == nil){
1. Allocate object code here
2. classObject = self;
3. return classObject
} else {
return classObject;
}
}
但是我的问题是我将如何取消分配该对象。我从所有类中调用此init方法,并且每次都返回classObject引用。
我的方法
从appdelegate.m中的dealloc方法,我正在调用在MyClassName中定义的函数(releaseObject)。这是功能体的定义...
-(void) releaseObject {
[self release]; // Confusion: Will it dealloc classObject reference?
[super release];
}
这是个好主意吗?我的问题是,在应用程序没有关闭之前,我不必释放对象。
最佳答案
我建议在您的单例中添加一个额外的类方法:
static MyClassName *classObject = nil;
...
+ (MyClassName *)sharedInstance {
...
}
+ (void)releaseSharedInstance {
[classObject release];
classObject = nil;
}