Категории Objective-C чрезвычайно полезны, но с этой способностью есть некоторые проблемы. Они приходят в основном в двух формах, о которых я знаю:
- Две категории пытаются добавить один и тот же удобный метод. В этом случае не определено, какой из них используется. Если вы будете осторожны - не добавляйте слишком много методов или не используйте наиболее распространенные имена методов - первая проблема почти никогда не должна быть проблемой.
- Новые методы, добавляемые в класс автором, конфликтующим с категорией. В этом случае категория переопределяет метод класса. Так как урок может быть не под моим контролем, я больше беспокоюсь об этой проблеме.
Backporting изменения должны быть довольно безопасными, но реализация интерфейсов или добавление удобных методов кажутся более опасными. Я знаю, что какао, кажется, довольно часто использует его для удобства, но опять же базовый класс находится под его контролем. Я думаю, что, возможно, они просто используют категории для уменьшения зависимостей - поэтому у класса String могут быть удобные методы для работы в Какао, но если вы не используете Какао, он не включается.
Итак, насколько безопасны категории / какие существуют инструкции по их сохранности?