Разработка приложения Какао - PullRequest
2 голосов
/ 18 июля 2011

Я пишу приложение Какао, к которому продолжаю добавлять кнопки, представления и слои.Однако из-за всех этих дополнений мой класс appdelegate стал довольно большим и трудным для чтения.Поэтому я решил перенести некоторые вызовы, связанные с пользовательским интерфейсом, в другие классы из приложения appdelegate.Однако кажется, что вызовы пользовательского интерфейса должны выполняться только в основном потоке и (исправьте меня, если я ошибаюсь) из приложения appdelegate.Мой эксперимент по переводу вызовов в другие классы также заставил меня столкнуться с трудностями при проверке правильности выполнения всего процесса в главном потоке.Итак, все мои вызовы пользовательского интерфейса все еще вызываются из класса appdelegate.

Мои вопросы: как я могу улучшить дизайн своего приложения?Можно ли вызвать пользовательский интерфейс из других классов, кроме appdelegate, чтобы избежать проблем с многопоточностью?Могу ли я разделить класс appdelegate на строгие файлы, один для кнопок, один для представлений и т. Д., Или есть лучший способ разработки приложения?Любые предложения по ссылкам на примеры или учебники / книги с благодарностью.

Спасибо всем.Ура, тронд

Ответы [ 2 ]

4 голосов
/ 18 июля 2011

Какао основано на архитектуре Model-View-Controller . В справочнике Cocoa Design Patterns приведено несколько отличных материалов о том, как использовать этот шаблон в Какао. По сути, вы хотите, чтобы в делегате приложения было как можно меньше кода пользовательского интерфейса. Делегат приложения должен отвечать только за за контроль уровня приложения, если это возможно. Гораздо лучше поместить код контроллера UI в отдельные классы контроллеров. Архитектура MVC ведет вас по правильному пути; Какао предоставляет представления, вы пишете классы модели - «бизнес» логику вашего приложения - и затем используете контроллер представления для координации двух.

3 голосов
/ 18 июля 2011

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

Теперь некоторые вещи пользовательского интерфейса можно выполнять в других потоках, но AFAIK UIKit не предназначен для потоков-безопасные и, следовательно, странные вещи и сбои могут происходить.

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

Посмотрите на UIViewController и на то, что он вам предлагает, если вы можете разделить свое приложение на"страницы" это может быть путь.

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