Как структурировать очень большой класс Objective-C? - PullRequest
1 голос
/ 01 февраля 2010

У меня довольно сложное окно, которое поддерживается классом контроллера, который, очевидно, растет в соответствии с потребностями моего окна просмотра. Хотя я верю, что придерживаюсь правильного MVC, у меня все еще есть проблемы с управлением довольно большим классом контроллеров.

Как вы разбиваете свои объекты? Может быть, использовать категории? Например, одна категория для обработки нижней части окна, другая категория для обработки моего NSOutlineView, другая категория для обработки таблицы и так далее и т. Д.

Любые идеи или предложения приветствуются.

Ответы [ 4 ]

6 голосов
/ 01 февраля 2010

Похоже, это сложный оконный контроллер, который растет до неуправляемых размеров? Это становится более распространенной проблемой из-за приложений, которые, как и iApps, выполняют большую часть своей работы в одном окне.

Начиная с Leopard, рекомендуемый способ разбить его - выделить каждую часть окна в отдельный подкласс NSViewController. Так, например, у вас будет контроллер представления для вашего контурного вида и контроллер представления для каждого из ваших представлений содержимого и т. Д.

Кроме того, я бы хотел во-вторых использовать #pragma mark s для разделения файлов кода на сегменты, и в дополнение к категориям я также хотел бы использовать расширения классов для частных методов.

2 голосов
/ 02 февраля 2010

Это простой ответ, но функция свертывания кода в Xcode IDE может быть полезна для концентрации вашего внимания на разделах класса. Еще одна небольшая вещь, которая может помочь, это перейти к View-> Code Folding и включить Focus Follows Selection. Это делает его таким, что цвет фона области вашего текущего выделения - белый, а все остальное - оттенки серого.

0 голосов
/ 01 февраля 2010

Я пытался использовать Категории в подобных ситуациях, и я просто запутался, задаваясь вопросом, как в мире я вызываю этот метод, когда он «явно» не в классе, на который я смотрю.

Я бы порекомендовал свободно использовать #pragma mark в вашем исходном коде. Облегчает просмотр всех ваших методов.

0 голосов
/ 01 февраля 2010

Категории идеально подходят для этого. Создайте новый файл для каждой категории и сгруппируйте их по функциональности, как вы предлагали.

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