iOS - работа с большими и растущими классами UIViewController

У меня есть UIViewController, который со временем добавил в него много делегированных событий, что сделало класс контроллера довольно большим. Класс UIViewController содержит довольно много методов управления представлением, которые вызываются из методов event-delegate для управления UIView, которым управляет контроллер.

Теперь я добавляю в класс дополнительные события делегата UIActionSheet. Мой класс контроллера становится большим, и я думаю, что я должен разбить события делегата UIActionSheet и поместить их в отдельный класс делегата. Затем этому отдельному классу делегатов придется перезванивать в класс контроллера вида, чтобы заставить контроллер представления соответствующим образом настроить представление, используя методы управления представлением в контроллере представления. (Контроллер вида обращается к отдельному объекту модели, который представляет представление).

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

Может ли кто-нибудь дать некоторые слова мудрости по этой теме и, возможно, указать мне на некоторые конкретные чтения [iOS](/tag5122) по этому вопросу?

Большое спасибо.

В итоге я создал немало дополнительных классов для работы с конкретными экземплярами UIActionSheet. Я создал базовый класс, а затем подклассифицировал его для каждого требования UIActionSheet в основном контроллере.

Конечный результат выглядит аккуратно и не добавляет слишком много сложности.



Мой подход к этому вопросу:

1. Заставьте это работать.
2. Сделать кливер
3. Назад к 1.
(Или 1 и 2 в том же порядке, если у вас есть опыт в поле)

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

```
http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html

```

На всякий случай ссылка на предложения шаблона дизайна Cocoa, и я время от времени просматриваю  `Pro design c шаблоны проектирования для [iOS](/tag5122)` . Возможно, это не лучшая книга, но она основана на книге «Банда из четырех» в ios-контексте.

Надеюсь, это поможет хотя бы как-то,

ура