0

我们知道第一次访问对象时调用的方法 initialize。

假设我有一个班级,A,其孩子是 B、C、D

说,B,C,D被访问(A实际上是一个抽象类)。

会调用 [A initialize] 吗?

基本上 B、C 和 D 可以有自己的初始化方法,但方法相似。所以我想把它放在A中。

我不打算直接调用初始化。我想我只需要调用[超级初始化]。如果 B 根本没有初始化怎么办。会调用 [A initialize] 吗?

4

4 回答 4

1

如果 A 有方法初始化并且您[B initialize]在 B 没有实现这样的方法时调用,则调用 A 处的方法初始化,因为 B 是 A 的子项。

于 2013-09-27T09:56:43.373 回答
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 答案

于 2013-09-27T09:59:25.213 回答
0

不,如果你直接打电话

[B Initiliaze]

(其中“Initialize”方法覆盖了 A 的 Initialize),不调用 A 上的方法。如果您需要调用它,您必须从“B Initialize”方法手动调用它。

于 2013-09-27T09:59:19.123 回答
0

[A initialize]保证在之前被调用[B initialize]。如果类B没有实现+initialize自己,那么调用[B initialize]将第二次运行A+initialize实现(使用self == B)。

于 2013-09-27T20:24:34.913 回答