2013-02-07 1 views
3

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

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

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

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

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

ответ

0

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

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

0

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

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

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

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

Только в случае, если ссылка на шаблон предложения какао-дизайн и я время от времени смотрит в Pro objective c design patterns for ios. Возможно, это не лучшая книга, но она основана на книге «Банда из четырех» в ios-контексте.

Надеется, что это помогает, по крайней мере как-то,

Приветствия

Смежные вопросы