Я не думаю, что вы можете создать категорию на протоколе, но вы можете создать протокол с использованием протокола и сохранить его в частном заголовке.Apple делает это довольно часто в своих рамках.
@protocol MyDelegate_Private <MyDelegate>
- (void)myRequiredPrivateMethod;
@optional
- (void)myOptionalPrivateMethod;
@end
Затем вы указываете этот протокол при объявлении класса.Чтобы скрыть тот факт, что существует частный протокол, используйте открытый заголовок, который объявляет класс как реализующий открытый протокол, и частный заголовок, который объявляет его как реализующий частный протокол.
Кроме того, если вы используете только необязательныйметоды в протоколе, вам не нужно создавать протокол.Все, что он делает - это указывает список методов, которые могут быть реализованы, и поскольку он используется только в личных целях, в этом нет необходимости.Вы могли бы просто сказать, что класс реализует открытый протокол и «просто случается» также реализовывать эти другие методы, которые не включены в интерфейс.