Недавно я понял, что мне нужно добавить аргумент в метод 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];
}
, но я ' Я не уверен, является ли это приемлемым или нет. Код работает нормально.
Да, это вполне приемлемо и на самом деле довольно часто.
Вот почему у нас есть то, что называется « Назначенный инициализатор ». Это метод инициализатора, на который перенаправляются все остальные инициализаторы (обычно).