Как предотвратить использование других методов init, кроме моего пользовательского метода в target-c
Фон - в моем приложении для iPhone у меня есть пользовательский UITableViewController - я собирался передать ему некоторую необходимую конфигурацию, расширив существующий метод "(id)initWithStyle:(UITableViewStyle)" до расширенного пользовательского метода.
Вопрос - как лучше всего обеспечить, чтобы пользователь этого пользовательского класса контроллера мог вызывать только мой пользовательский метод init, а не initWithStyle или любые другие методы init?
2 ответа
Вы можете переопределить методы init, которые вы не хотите использовать, и вызвать там исключение.
Вы также можете переопределить их и заставить их инициализировать с помощью назначенного инициализатора.
Кроме того, вы должны указать это в своей документации.
Я обычно документирую это и ставлю [self doesNotRecognizeSelector:_cmd]
вызовите методы init, которые не предназначены для использования.
Вместе с тем, помечая метод как устаревший (см. Как пометить функцию как устаревшую в заголовочном файле iPhone Objective C?), Предотвращается неожиданность выполнения и выдается предупреждение во время компиляции.