Я бы создал отдельный заголовочный файл с категорией. Вы могли бы назвать эту категорию Protected
:
@interface MyClass(Protected)
// Place your "protected" methods here.
@end
Обычные пользователи класса не будут #import
этот файл, только файл основного класса. Но реализация и подклассы будут также #import
файлом заголовка, содержащим категорию Protected
.
Если методы являются необязательными, вы можете вместо этого использовать протокол:
@protocol MyClassProtected
// Required methods here.
@optional
// Optional methods here.
@end
Мне кажется, что это не такое хорошее решение, как категория, но оно бы сработало.
Тогда третий способ - просто воздержаться от соглашения: назовите ваши защищенные методы соответствующим образом:
@interface MyClass {
}
// This method is not to be called by users, but subclasses may
// overwrite to do something else.
- (void) protected_someMethodDoingFoo;
@end