Может ли категория реализовать протокол в Objective C?

У меня есть категория в NSDate, и было бы удобно, если бы она могла реализовать ранее созданный протокол. Это возможно? какой правильный синтаксис для этого?

Ответ 1

Да, это возможно. Синтаксис:

@interface NSDate (CategoryName) <ProtocolName>
@end

@implementation NSDate (CategoryName)
@end

Здесь документация Apple по теме.

Это также можно сделать с помощью расширения класса. Мне очень нравится частное согласование протоколов делегатов. Это скрывает детали реализации того, что они являются делегатами какого-либо класса из открытого интерфейса и удаляет зависимость из заголовка.