Occationaly Я вижу фрагменты кода создания новых методов для объектов и таким образом, что выглядит следующим образом:Где поставить «лишнюю» реализацию?
@implementation UIImage (Extras)
- (void)aMethod:(id)anObject {
// some functionality
}
@end
Где разместить этот код? Я помещаю его в класс, в котором я сейчас пишу код? Если да, то в какой момент кода мне нужно это поставить?
спасибо.
Спасибо, ребята, просто добавьте его в эти файлы и импортируйте его как обычно? :) просто как тот? блестящий. –
Интересно, стоит ли эта общая идиома. Почему бы просто не поместить свои методы в класс-помощник под названием UIImageExtras с _no category_. Какая категория покупает вас, кроме сохранения импорта вашего вспомогательного класса? Недостаток категории ясен: если ваше добавление является общим именем, вы рискуете столкнуться с будущим изменением класса UIImage или, что более вероятно, с другой подобной категорией, когда вы включаете свою библиотеку (потому что они читают тот же пост на SO). В чем главное преимущество, которое мне не хватает? – Rhubarb
Это элегантный подход. Вы можете вызывать методы непосредственно на объекте. Классы помощников - это не что иное, как контейнеры для статических функций. Они в порядке, но отнимают много очарования от объектно-ориентированного программирования. Мое занятие: если вы работаете * на * объекте, используйте категорию, если вы работаете * с * объектом, используйте вспомогательный класс. И категории очень хорошо работают с подклассами. Что касается коллизий имен, может быть хорошей идеей префикс имен ваших методов. – Eiko