iOS - 为什么调用空构造函数会破坏程序?

时间:2012-07-16 18:37:42

标签: objective-c

我有一个像这样的构造函数:

-(id) init 
{
    // do something here...not sure what yet  :)
}

我可以很好地实例化这个类的对象,但是我在这个类上调用方法时遇到错误。为什么会这样?我在这里错过了什么?我应该调用超类构造函数吗?或者是否有某种记忆问题?

谢谢!

2 个答案:

答案 0 :(得分:4)

  

我在这里缺少什么?

您缺少对超类的指定初始值设定项的调用,对self的赋值以及return语句。

你的最小未完成构造函数应如下所示:

-(id) init 
{
    if (self=[super init]) {
        // do something here...not sure what yet  :)
    }
    return self;
}

答案 1 :(得分:1)

你需要返回一些东西,通常是self,你指的是你的方法返回类型(id),在objective-c中可以是任何东西,但你必须返回一些东西。

典型的init看起来像这样:

-(id) init 
{
    self = [super init];
    if (self) {
    // do something here...not sure what yet  :)
    }
    return self;
}