2011-01-20 3 views
4
- (void)viewDidAppear:(BOOL)animated { 
    <CODE BEFORE> 
    [super viewDidAppear:animated]; 
    <CODE AFTER> 
} 

Что является правильным, поставить весь код до или после супервызов? Его работа в обоих направлениях, но я не знаю, лучше ли его ждать до конца или отправить его в начале?Obj-C: call super class

веселит эндо

ответ

3

В общем, ваш код должен идти после призыв к супер. Единственным очевидным исключением является dealloc, и в этом случае вы хотите позвонить [super dealloc] после того, как вы очистились после себя.

9

Общее правило заключается в том, чтобы называть его первым при настройке (например, здесь) и называть его последним при разрыве вещей.

0

Это зависит от того, что вы делаете. Можете ли вы предоставить некоторый контекст вокруг объектов, которые вы используете?

Например, в контексте уничтожение объекта, вы называете супер последним.

- (void)dealloc { 
[someObj release]; 

[super dealloc]; 

}

1

Это зависит от конкретного случая, на самом деле:

  • Для инициализации/очистки, очевидно, так как подкласс зависит от его суперкласса состояния, он должен инициализировать после и очистки до.

  • В общем, вам может потребоваться добавить поведение как до, так и после супервызов, или даже полностью опустить супер-вызов (в конце концов, это переопределение метода).

В этом точном случае см. Другие ответы; но так как viewDidAppear: - это метод, похожий на уведомление, это действительно зависит от того, нужен ли вашему коду полностью инициализированный объект или участвует в самой инициализации, и поэтому он должен выполняться только с помощью супервызов, как только это будет сделано.

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