超级init对自己的分配是什么?

时间:2011-04-08 11:02:50

标签: objective-c

鉴于这段代码:

-(id) init
{
    self = [super init];
    if (self != nil)
    {
       ...
    }
    return self;
}

我知道我们正在检查超级初始化没有失败,但对我来说没有任何意义,我会感谢对菜鸟的解释。

为什么我要将super init的结果分配给self。如果我从我的类中删除这个方法,那么无论如何都会调用super init方法,并且不会有任何赋值。

1 个答案:

答案 0 :(得分:5)

原则上(并且,令人惊讶的是,即使在实践中)[super init]也可以返回不同的对象!有关详细信息,请参阅http://mikeash.com/pyblog/the-how-and-why-of-cocoa-initializers.htmlhttp://cocoawithlove.com/2009/04/what-does-it-mean-when-you-assign-super.html