在NSObject子类的自定义init方法中使用self = [super init]

时间:2011-10-13 10:29:53

标签: objective-c ios oop

我正在继承NSObject

@interface MyClass : NSObject {

}
-(id)customInit;
@end

并在其中实现自定义init方法,

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

并创建一个MyClass实例,如下所示

MyClass *myClassInstance = [[MyClass alloc]customInit];

现在我的问题是,如果我使用不带self = [super init]的customInit方法,我将会错过什么;如下,

  -(id)customInit
    {
       return self;
    }

我会错过NSObject类的超级类吗?谢谢

2 个答案:

答案 0 :(得分:2)

不,你不会错过任何东西。来自documentation

  

init类中定义的NSObject方法不进行初始化;它只返回self

但是,我仍然建议调用self = [super init]以便将来证明您的代码,以防您决定更改基类。

答案 1 :(得分:1)

如果我的customInit方法中没有[super init],我将错过NSObject的init方法完成的工作。但是否则我将继承访问超级类及其协议的所有方法。