Да, это возможно. Синтаксис:
@interface NSDate (CategoryName) <ProtocolName>
@end
@implementation NSDate (CategoryName)
@end
Вот документация Apple по теме.
Это также возможно сделать с помощью расширения класса. Мне очень нравится это в частном порядке соблюдать протоколы делегатов. Это скрывает детали реализации того, что некоторые делегаты некоторого класса находятся в открытом интерфейсе, и удаляет зависимость из заголовка.