自定义init方法在第二次调用时返回nil

时间:2013-06-02 00:59:53

标签: objective-c initialization null

我有一个自定义类MBIKioku,使用这样的init方法:

- (id)initWithSize:(int)size
{
    if(self = [super init])
    {
        // do stuffs
    }
    return self; // breakpoint A
}

我在我的视图控制器中使用它,如此

@implementation MBIKiokuViewController
{
    MBIKioku *kioku;
    // other instance variables
}

- (void)loadLevel:(int)level
{
    kioku = [[MBIKioku alloc] initWithSize:3];
    // do stuffs (breakpoint B)
}

我第一次调用loadLevel:时,一切都很完美。但是,它第二次返回nil!

我尝试在返回self(断点A)之前和初始化之后(断点B)放置一个中断并通过调试器运行它。这是我学到的东西:

  • 您需要在断点A上按两次继续,然后才能继续执行。第一次按下“继续”时,self将设置为nil。 Dunno在后台发生了什么伏都教(一些ARC的东西?)。但是,在第一次调用initWithSize:时,调用者正确地获得了一个非零值。
  • 第二次调用initWithSize:调用者总是为零!因此,第二次执行时,断点B上kioku的值将为nil。

这实际上是一段代码,在我的其他项目中工作正常,但在我的第二个项目上失败了。

有关此处发生的事情的任何线索?非常感谢!

0 个答案:

没有答案