Если категория, которую я создаю для класса, добавляет методы, которые также выполняют контракт, установленный протоколом, я хотел бы отметить этот класс категории как реализацию протокола и тем самым указать Obj-C pre- процессор, который класс эффективно реализует протокол.
Пример делегата (для ясности, спасибо Ole!):
@protocol SomeDelegate <NSObject>
- (void)someDelegateMessage;
@end
Пример категории:
@interface NSObject (SomeCategory) <SomeDelegate>
- (void)someDelegateMessage;
@end
И с обычной типичной реализацией
@implement NSObject (SomeCategory)
- (void)someDelegateMessage {}
@end
Когда я на самом деле пытаюсь это сделать, я получаю предупреждение для каждого метода NSObject:
предупреждение: неполная реализация категории "SomeCategory"
предупреждение: определение метода для '-description' not found
...
предупреждение: определение метода для '-isEqual:' not found
warning: category 'SomeCategory' не полностью реализует протокол NSObject
Прекрасно работает, если я удаляю <SomeDelegate>
из объявления, но, конечно, NSObject не распознается как SomeDelegate