Каковы преимущества и недостатки использования категорий? Почему и когда они нам нужны? - PullRequest
4 голосов
/ 03 сентября 2010

Каковы преимущества и недостатки использования категорий?Зачем и когда они нам нужны?

1 Ответ

6 голосов
/ 03 сентября 2010

Преимущества:

  • Вы можете расширить любой класс, даже тот, для которого у вас нет источника.Посмотрите, например, на расширения пользовательского интерфейса, добавленные Apple к классу NSString для рендеринга, получения метрик и т. Д.

  • Поскольку у вас есть доступ ко всем переменным экземпляра, категории предоставляюту вас есть хороший способ структурировать ваш код по блокам компиляции, используя логическую группировку вместо подхода «все должно быть в одном физическом месте», например, в Java.

Недостатки:

  • Вы не можете безопасно переопределять методы, уже определенные самим классом или другой категорией.

AFAIK, языки не дают никаких гарантий относительно того, какая реализация будет фактически вызвана, если вы попробуете что-то вроде:

@interface Foo { }
- (void) method;
@end

@interface Foo (MyCategory)
- (void) method;
@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...