Может ли категория реализовать протокол в Цели C? - PullRequest
84 голосов
/ 29 апреля 2011

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

1 Ответ

140 голосов
/ 29 апреля 2011

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

@interface NSDate (CategoryName) <ProtocolName>
@end

@implementation NSDate (CategoryName)
@end

Вот документация Apple по теме.

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

...