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

Я только начал программировать Objective-C и, имея опыт работы с Java, удивляюсь, как люди, пишущие программы Objective-C, имеют дело с приватными методами.

Я понимаю, что может быть несколько условностей и привычек, и думаю, что этот вопрос объединяет лучшие методы, которые люди используют для работы с частными методами в Objective-C.

Пожалуйста, укажите аргумент в пользу вашего подхода при публикации. Почему это хорошо? Какие у него недостатки (о которых вы знаете) и как с ними справляться?

<Ч />

Что касается моих выводов.

Можно использовать категорий [например, MyClass (Private)], определенный в файле MyClass.m для группировки частных методов.

У этого подхода есть 2 проблемы:

  1. Xcode (и компилятор?) Не проверяет, определяете ли вы все методы в частной категории в соответствующем блоке @implementation
  2. Вы должны поместить @interface, объявляющий вашу личную категорию, в начало файла MyClass.m, в противном случае XCode жалуется на сообщение типа «self может не отвечать на сообщение« privateFoo ».

Первая проблема может быть решена с помощью пустой категории [например, MyClass ()]. ​​
Второй очень беспокоит меня. Я хотел бы видеть частные методы, реализованные (и определенные) в конце файла; Я не знаю, возможно ли это.

Ответы [ 12 ]

1 голос
/ 16 марта 2009

Нет способа обойти проблему № 2. Именно так работает компилятор C (и, следовательно, компилятор Objective-C). Если вы используете редактор XCode, всплывающая функция должна облегчать навигацию по блокам @interface и @implementation в файле.

0 голосов
/ 25 октября 2018

Как говорили другие люди, определение частных методов в блоке @implementation в большинстве случаев нормально.

На тему организации кода - мне нравится хранить их вместе под pragma mark private для упрощения навигации в Xcode

@implementation MyClass 
// .. public methods

# pragma mark private 
// ...

@end
...