我正在为一个类创建子类。 我正在覆盖init方法。这一个: - (id)initWithSomething :( Something *)somet;
这看起来像这样(在子类中)
-(id)initWithSomething:(Something *)somet with:(int)i{
if (self = [super init]) {
//do something
}
return self;
}
但是现在我想在超类中调用init。
我现在怎么做?梅比这样?
-(id)initWithSomething:(Something *)somet with:(int)i{
if (self = [super init]) {
}
[super initWithSomething:somet];
return self;
}
答案 0 :(得分:2)
通常是这样的:
-(id)initWithTarget:(CCNode *)someTarget
{
self = [super initWithTarget:someTarget];
if (self)
{
}
return self;
}
如果需要,调用vanilla init选择器是super的责任。
答案 1 :(得分:2)
-(id)initWithSomething:(Something *)somet {
if ((self = [super initWithSomething:somet])) {
// ...
}
return self;
}
一对一方法应该是您的“指定初始化程序”。所有其他初始值设定项应调用该值,指定的初始值设定项应调用super
指定的初始值设定项。 (这是一般规则;有一些例外情况,例如initWithCoder:
,但这是正常方法。)