我们知道一个方法初始化,这是在第一次访问对象时调用的。
说我有一个班,A的孩子是B,C,D
Say,B,C,D被访问(A实际上是一个抽象类)。
是否会调用[初始化]?
基本上B,C和D可以拥有自己的初始化方法,但方法类似。所以我想把它放在A中。
我不打算直接调用initialize。我想我只需要调用[super initialize]。如果B根本没有初始化怎么办?是否会调用[初始化]?
答案 0 :(得分:1)
如果A有方法初始化并且当B没有实现这样的方法时你调用[B initialize]
,则调用A的方法初始化,因为B是A的子节点。
答案 1 :(得分:1)
如果你想在子类Initialize中做额外的事情,那么你可以这样做:
@implementation A
+(void)initialize
{
// stuff you want to do for all of your subclasses
}
@end
@interface B : A
@end
@implementation B
+(void)initialize
{
[super initialize];
// anything special for B
}
@end
如果您只想要A类初始化的内容,请参阅CodeHelps回答
答案 2 :(得分:0)
不,如果你直接打电话
[B Initiliaze]
(其中“Initialize”方法覆盖A的Initialize),不调用A上的方法。 如果需要调用它,则必须从“B初始化”方法手动调用它。
答案 3 :(得分:0)
[A initialize]
之前调用 [B initialize]
。如果课程B
本身未实现+initialize
,那么对[B initialize]
的调用将再次执行A
的{{1}}实施(+initialize
})。