我正在继承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类的超级类吗?谢谢
答案 0 :(得分:2)
不,你不会错过任何东西。来自documentation:
init
类中定义的NSObject
方法不进行初始化;它只返回self
。
但是,我仍然建议调用self = [super init]
以便将来证明您的代码,以防您决定更改基类。
答案 1 :(得分:1)
如果我的customInit方法中没有[super init],我将错过NSObject的init方法完成的工作。但是否则我将继承访问超级类及其协议的所有方法。