0

オブジェクトが初めてアクセスされたときに呼び出されるメソッド initialize を知っています。

子がB、C、DであるクラスAがあるとします

たとえば、B、C、D がアクセスされます (A は実際には抽象クラスです)。

[A initialize] は呼び出されますか?

基本的に、B、C、および D は独自の初期化メソッドを持つことができますが、メソッドは似ています。なので、Aに入れようと思っています。

初期化を直接呼び出すつもりはありません。[super initialize] を呼び出す必要があると思います。B に初期化がまったくない場合はどうなりますか。[A initialize] は呼び出されますか?

4

4 に答える 4

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 に答える
1

A にメソッド initialize があり[B initialize]、B がそのようなメソッドを実装していないときに呼び出すと、B は A の子であるため、A でメソッド initialize が呼び出されます。

于 2013-09-27T09:56:43.373 に答える
0

いいえ、直接電話する場合

[B Initiliaze]

(「Initialize」メソッドが A の Initialize を上書きする場合)、A のメソッドは呼び出されません。呼び出す必要がある場合は、「B Initialize」メソッドから手動で呼び出す必要があります。

于 2013-09-27T09:59:19.123 に答える
0

[A initialize]の前に呼び出されることが保証されています[B initialize]。classがそれ自体をB実装していない場合+initialize、 への呼び出しはの実装を 2 回実行します ( を使用[B initialize]) 。A+initializeself == B

于 2013-09-27T20:24:34.913 に答える