Как узнать, какой инициализатор является назначенным инициализатором для ЛЮБОГО класса? Я предполагаю, что это тот, который принимает большинство параметров, но могут быть моменты, когда это неверно.
Как узнать, какой инициализатор является назначенным инициализатором?
Ответ 1
omz ответ может быть сформулирован более твердо: в документации для класса framework указывается, который является назначенным инициализатором. Необходимо знать, что назначенный инициализатор предназначен для записи подклассов, которые ведут себя правильно. Подкласс D.I. должен обратиться к суперклассу D.I. чтобы убедиться, что он правильно инициализирован.
Однако ваша предположения о наибольшем числе параметров являются обоснованными. Apple фактически заявляет, что это часто D.I. в нескольких местах.
Инициализатор класса, который принимает полный набор параметров инициализации, обычно является назначенным инициализатором.
Некоторые подклассы предоставляют инициализаторы удобства, которые предоставляют значения по умолчанию для инициализатора, который в полной мере выполняет параметры инициализации. Этот инициализатор обычно является назначенным инициализатором, самым важным инициализатором класса.
Ответ 2
Вы не можете это знать, не глядя ни на исходный код (невозможно для системных фреймворков), ни на документацию (потенциально суперкласс).
Ответ 3
Из книги программирования BigNerdRanch iOS:
* Назначенный инициализатор вызывает суперклассы, обозначенные как инициализатор (прямо или косвенно), прежде чем делать что-либо еще.
* Любые другие инициализаторы называют инициализаторы классов (прямо или косвенно).
* Если класс объявляет назначенный инициализатор, отличный от его суперкласса, переопределенный суперклассом инициализатор должен быть переопределен для вызова нового назначенного инициализатора (прямо или косвенно).
Конвей, Джо; Хиллегасс, Аарон; Кер, Кристиан (2014-02-14). Программирование iOS: Путеводитель по большому ботаническому ранчо (4-е издание) (Руководство по раннему рангу Nerd) (Kindle Locations 1906-1910). Образование Пирсона. Kindle Edition.