Можно ли вызывать метод init самостоятельно, в методе init? - PullRequest
9 голосов
/ 16 августа 2010

Недавно я понял, что мне нужно добавить аргумент в метод init для вспомогательного класса, который у меня есть. Вспомогательный класс работает с представлениями предупреждений, поэтому он уже имеет в аргументе кучу аргументов, которые просматриваются, настраиваются и затем отправляются в представление предупреждений.

Поскольку я использую метод, как он есть в разных местах, я не хочу рисковать сбой (пропуская одно из этих мест и получая «нераспознанный селектор» в руках клиента), поэтому я решил добавить второй метод инициализации.

* 1005 Т.е. *

- (id)initWithA:B:C:D:

и

- (id)initWithA:B:C:foo:D:

Прямо сейчас я просто скопировал и вставил первую реализацию в foo: одну, но в идеале было бы неплохо сделать первый вызов вторым, т.е.

- (id)initWithA:a B:b C:c D:d
{
    return [self initWithA:a B:b C:c foo:nil D:d];
}

но я не уверен, приемлемо это или нет. Код работает нормально.

1 Ответ

16 голосов
/ 16 августа 2010

Да, это вполне приемлемо и на самом деле довольно часто.

Вот почему у нас есть вещи, называемые Назначенный инициализатор .Это метод инициализатора, на который перенаправляются все остальные инициализаторы (обычно).

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