2013-09-27 3 views
0

Мы знаем, что метод инициализируется так называемым при первом обращении к объекту.Будет ли инициализация вызвана всеми подклассами?

Скажем, у меня есть класс, чей ребенок представляет собой В, С, D

Скажем, В, С, D доступ (А на самом деле это абстрактный класс).

Будет ли вызываться [A initialize]?

В основном B, C и D могут иметь собственный метод инициализации, но методы аналогичны. Так что я думаю, просто положить его в A.

Я не намерен напрямую инициировать инициализацию. Полагаю, мне просто позвонили [super initialize]. А если B не инициализируется вообще. Будет ли вызываться [инициализация]?

ответ

1

Если А есть метод инициализации, и вы называете [B initialize] когда B не реализовать такой метод, то метод инициализации в точке А называется так как В является потомком А.

+0

Я не намерен напрямую инициировать инициализацию. Полагаю, мне просто позвонили [super initialize]. А если B не инициализируется вообще. Будет ли вызываться [инициализация]? –

0

Нет, если вы звоните непосредственно

[B Initiliaze] 

(где метод «Инициализация» перезаписывает инициализацию A), метод A не вызывается. Если вам нужно позвонить, вы должны вызвать его вручную из метода «B Initialize».

+0

+ initialize - это метод класса, который требует время выполнения перед классом, вы не называете его самим. –

1

Если вы хотите сделать дополнительные вещи в подклассе инициализации, то вы можете сделать:

@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 

Если вы хотите только материал, в Initialize КЛАССА А в то увидеть CodeHelps ответ

0

[A initialize] гарантированно будет до [B initialize]. Если класс B не реализует сам +initialize, то вызов [B initialize] будет выполняться во второй раз A (self == B).

+0

Я не спрашиваю, будет ли вызываться [A initialize] при вызове [B initialize]. Я спрашиваю, вызывается ли [А инициализация], когда Б обращается к нему впервые. –

Смежные вопросы