Objective-C 2.0 и категории - PullRequest
       2

Objective-C 2.0 и категории

1 голос
/ 04 ноября 2011

В target-c, если у меня есть класс, такой как "Foo", и у меня есть категория для этого класса "Foo (bar)", но я не реализую все методы, объявленные в категории, я должен был бы переопределить ихв подклассе, прежде чем я определю их?Моя книга говорит да (не уверен, если это ошибка, или она была изменена), я не понимаю, почему это так.

В основном, как категории применяются к подклассам?

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

Вам не нужно повторно объявлять метод, но вы должны иметь возможность «видеть» объявление, если вы вызываете его внутри.(т. е. #import 'Foo+bar.h' в ваших подклассах .m).

Однако не рекомендуется объявлять метод, но не реализовывать его.Ваше приложение будет зависать, если вызывается -[Foo someDeclaredButNotImplementdMethod].По крайней мере, предоставьте пустые реализации (например, - (void)someDeclaredButNotImplementdMethod {}).

1 голос
/ 04 ноября 2011

Категории ортогональны иерархии классов. Они относятся к классу, где они определены. Во время выполнения методы категории добавляются в таблицу методов класса. Подклассы могут использовать их, как если бы они были обычными методами.

Обязательно (пере) прочитайте эту главу языка программирования Objective-C о предмете.

Если вы хотите переопределить метод категории в подклассе, вы можете сделать это, объявив его в интерфейсе класса или объявив категорию для подкласса.

Надеюсь, это поможет.

...