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


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

1 82

1 ответ:

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

@interface NSDate (CategoryName) <ProtocolName>
@end

@implementation NSDate (CategoryName)
@end

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

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