Как предотвратить использование других методов init, кроме моего пользовательского метода в target-c

Фон - в моем приложении для iPhone у меня есть пользовательский UITableViewController - я собирался передать ему некоторую необходимую конфигурацию, расширив существующий метод "(id)initWithStyle:(UITableViewStyle)" до расширенного пользовательского метода.

Вопрос - как лучше всего обеспечить, чтобы пользователь этого пользовательского класса контроллера мог вызывать только мой пользовательский метод init, а не initWithStyle или любые другие методы init?

2 ответа

Решение

Вы можете переопределить методы init, которые вы не хотите использовать, и вызвать там исключение.

Вы также можете переопределить их и заставить их инициализировать с помощью назначенного инициализатора.

Кроме того, вы должны указать это в своей документации.

Я обычно документирую это и ставлю [self doesNotRecognizeSelector:_cmd] вызовите методы init, которые не предназначены для использования.

Вместе с тем, помечая метод как устаревший (см. Как пометить функцию как устаревшую в заголовочном файле iPhone Objective C?), Предотвращается неожиданность выполнения и выдается предупреждение во время компиляции.

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