Monotouch: правильный способ переопределить метод UIViewController - PullRequest
1 голос
/ 10 сентября 2011

Предположим, у меня есть собственный контроллер MyCustomUIViewController, который расширяет UIViewController:

public class MyCustomUIViewController : UIViewController
{
   //- my class implementation
}

Теперь я хочу переопределить такой метод:

public override void ViewDidLoad()
{
   base.ViewDidLoad();

   //- other stuff here
}

Нужно ли вызывать base.ViewDidLoad () или нет? Где я должен вызывать базовые методы? До или после пользовательского кода (то есть других вещей здесь)? Я видел много примеров, где базовые методы ставятся после выполнения каких-либо действий или даже пропускаются.

Заранее спасибо. С уважением.

Ответы [ 2 ]

1 голос
/ 10 сентября 2011

Реализация ViewDidLoad по умолчанию пуста, поэтому не имеет значения, если вы начнете с вызова base.ViewDidLoad (), не говоря уже о том, куда вы поместили вызов, если вы решили его сделать.

Одной из причин вставить ссылку на базовую реализацию было бы обеспечение правильной работы вашего кода, если Apple перепроектирует viewDidLoad таким образом, чтобы выполнял некоторые операции.В этом случае, я думаю, вам лучше разместить вызов в начале реализации ViewDidLoad, но вряд ли что-то подобное произойдет.

1 голос
/ 10 сентября 2011

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

Как правило, сначала вызывается base.

Например, этоэквивалентно, если этот типичный код объектива-c:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[self navigationItem] setTitle:@"Title"];

    // ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...