Как предотвратить использование других методов init, кроме моего пользовательского метода в Objective-C - PullRequest
1 голос
/ 11 июля 2011

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

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

Ответы [ 2 ]

6 голосов
/ 11 июля 2011

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

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

3 голосов
/ 11 июля 2011

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

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

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

...