Как пометить обозначенные инициализаторы суперкласса как "недействительные" в Objective-C?

Из документа " Адаптация современной Objective-C":

Если класс предоставляет один или несколько назначенных инициализаторов, он должен реализовать все назначенные инициализаторы своего суперкласса.

Это означает, что если у меня есть подкласс NSObject который имеет свой собственный назначенный инициализатор, скажем

- (instancetype)initWithImage:(UIImage*)image NS_DESIGNATED_INITALIZER;

тогда мне также нужно предоставить реализацию NSObjects -init, Что я должен сделать, чтобы отметить -init инициализатор как "недействительный", то есть никто не должен вызывать его, но использовать -initWithImage: вместо? Какая лучшая практика здесь?

редактировать

Я попробовал методы, описанные здесь.

Тем не менее, когда я отмечаю суперкласс -init метод как unavailable в интерфейсе компилятор все еще говорит мне, что мне нужно перезаписать инициализатор суперкласса.

Когда я пытаюсь использовать другие методы, например, вызывать исключение или вызывать -doesNotRecognizeSelector: Внутри -init, Я получаю сообщение об ошибке, в котором говорится, что мне нужно вызвать один из моих назначенных инициализаторов.

0 ответов

Другие вопросы по тегам