Как писал Avizzv92, каждый подкласс NSObject
имеет инициализатор -init
, унаследованный от NSObject
, поэтому технически ваш подкласс NSObject
будет иметь два инициализатора.Обычная практика - иметь один обозначенный инициализатор, а другие инициализаторы вызывать его с аргументами по умолчанию.
Что касается вашей -init:thing1:thing2:thing3:
идеи, это, безусловно, возможно.Однако рассмотрим следующее определение метода:
- (id)init:(id)param0 thing1:(id)param1 thing2:(id)param2 thing3:(id)param3 {
// …
}
Легко понять, что param1
относится к thing1
, param2
относится к thing2
, а param3
относится к thing3
,Но что такое param0
?По этой причине инициализаторы с параметрами имеют имена, начинающиеся с initWithSomething
: чтобы было понятно, что является первым параметром.