iphone - 是 self 释放,释放的实际对象吗?

标签 iphone objective-c ios singleton

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

宣言...
....

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

关于iphone - 是 self 释放,释放的实际对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10681491/

相关文章:

iphone - 如何在 annotationView 上找到按钮以在 iphone 中执行操作?

iphone - XCode:当用户点击 UITextbox 时显示 UIDatePicker

iphone - 我怎样才能从标签中获取对象?

ios - 使用 UITableView 部分进行分页

ios - Objective-C 中的委托(delegate)级联和劫持委托(delegate)回调

iphone - 删除其他框架后得到无法识别的选择器

ios - Swift Json - 从 API 获取数据

ios - 什么是 iPhone 7(new) 屏幕分辨率、像素和尺寸?

iphone - 更改 UITabBarController 更多项目颜色

objective-c - NSTableView 允许用户选择要显示的列