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