Прототипы методов в файле реализации для псевдо-частных методов? - PullRequest
1 голос
/ 15 августа 2011

У меня есть несколько методов, которые я не объявляю в интерфейсе моего класса, потому что только код внутри класса должен их использовать. Но расположение моих методов генерирует некоторые предупреждения «... может не отвечать селектору ...», когда методы хотят вызывать методы, которые реализованы под ними.

Можно ли как-нибудь объявить прототипы для этих псевдоприватных методов в моем файле реализации, чтобы я не получал эти предупреждения?

Ответы [ 3 ]

7 голосов
/ 15 августа 2011

Вы можете использовать расширение класса . Я предпочитаю их категориям (для этой цели), потому что методы, которые они объявляют , должны быть реализованы в основном блоке @implementation для соответствующего класса.

Для класса характерно иметь публично объявленный API и затем иметь дополнительные методы, объявленные в частном порядке для использования исключительно классом или структурой, в которой находится класс. Вы можете объявить такие методы в категории (или в более чем одной категории) в частном заголовочном файле или файле реализации, как упомянуто выше. Это работает, но компилятор не может проверить, что все объявленные методы реализованы.

Расширения классов позволяют объявлять дополнительные обязательные методы для класса в местах, отличных от основного класса @interface block

Вы объявляете расширение класса следующим образом:

@interface MyObject () // No name is given in the parentheses
1 голос
/ 15 августа 2011

Просто используйте категорию - я делаю что-то подобное в моих файлах .m:

@interface MyClass (PrivateMethods)
- (void)privateMethod1;
- (void)privateMethod2:(NSString *)aParam;
@end

@implementation MyClass
- (void)privateMethod1;
- (void)privateMethod2:(NSString *)aParam;
@end
0 голосов
/ 15 августа 2011

Частные методы не существуют в target-c. Смотрите этот пост.

Лучший способ определить частные методы для класса в Objective-C

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...