Как пометить обозначенные инициализаторы суперкласса как "недействительные" в Objective-C?
Из документа " Адаптация современной Objective-C":
Если класс предоставляет один или несколько назначенных инициализаторов, он должен реализовать все назначенные инициализаторы своего суперкласса.
Это означает, что если у меня есть подкласс NSObject
который имеет свой собственный назначенный инициализатор, скажем
- (instancetype)initWithImage:(UIImage*)image NS_DESIGNATED_INITALIZER;
тогда мне также нужно предоставить реализацию NSObjects -init
, Что я должен сделать, чтобы отметить -init
инициализатор как "недействительный", то есть никто не должен вызывать его, но использовать -initWithImage:
вместо? Какая лучшая практика здесь?
редактировать
Я попробовал методы, описанные здесь.
Тем не менее, когда я отмечаю суперкласс -init
метод как unavailable
в интерфейсе компилятор все еще говорит мне, что мне нужно перезаписать инициализатор суперкласса.
Когда я пытаюсь использовать другие методы, например, вызывать исключение или вызывать -doesNotRecognizeSelector:
Внутри -init
, Я получаю сообщение об ошибке, в котором говорится, что мне нужно вызвать один из моих назначенных инициализаторов.