我有一个单例类,它是整个项目中只有一次的分配对象。下面的代码行很少。

宣言...
....

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

10-08 07:48