我正在学习Objective-C,而且我不清楚什么是调用超类的最佳方法。自定义初始化程序,同时在其子类中定义一个。
这是我的班级' (超类)自定义初始化程序:
-(id) initWithWidth:(int)w andHeight:(int)h {
self = [super init];
if (self) {
[self setWidth:w andHeight:h];
}
return self;
}
-(instancetype) init {
return [self initWithWidth:0 andHeight:0];
}
我称之为超类' (NSObject
)初始值设定项并将其分配给self
。在检查self
不是nil
之后,我调用了类中定义的方法。之后,假设我的自定义初始值设定项是指定的初始值设定项,我会覆盖标准init
。
现在,我创建该类的子类。子类还有一个自定义初始化程序。这是:
-(id) initWithSide:(int)side {
self = [super initWithWidth:side andHeight:side];
if (self) {
[self setSide: side];
}
return self;
}
-(instancetype) init {
return [self initWithSide:0];
}
逻辑是相同的(再次,它调用在类中定义的自定义方法)。
问题是,我不太确定调用超类的正确方法是什么?初始化器(我仍然应该调用它,对吧?)。在论坛中,我发现有些人根本不打电话,这让我很困惑。
我应该拨打超类的指定初始化程序,还是根本不打电话给它。如果你能解释一下这是如何工作的,在这种情况下是正确的选择(或者是最佳实践),我将非常感谢你的帮助。