Можно ли вызывать метод init для себя, для метода init?

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

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

Т.е.

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

и

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

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

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

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

9
задан Kalle 16 August 2010 в 16:32
поделиться

1 ответ

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

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

16
ответ дан 4 December 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: