Должен ли я писать большую часть своего кода в контроллере или делегате?

#iphone #xcode #delegates #controller #ios5

#iPhone #xcode #делегаты #контроллер #ios5

Вопрос:

Я использовал Xcode 4.1, и после обновления до 4.2 все стало устаревать. Я использую много примеров из разных книг, таких как Руководства Big Nerd Ranch, в которых не используются раскадровки, а приложение на базе Windows было изменено на «Пустое» приложение.

С этими новыми изменениями я чувствую, что книги и учебные пособия, которые я использовал для начала, устарели. Во многих из этих примеров говорится о необходимости записи методов и переменных в заголовочных файлах делегата для 4.1. С новым 4.2 Xcode есть AppDelegate и ViewController. Должен ли я по-прежнему писать методы и члены класса в AppDelegate или я должен теперь записывать их в файл контроллера?

Я в замешательстве. Теперь Apple хочет, чтобы мы создали наш контроллер и ссылались на него через делегата?

Ответ №1:

Когда ваше приложение запускается, оно создает экземпляр UIApplication . Вы хотите знать вещи, которые UIApplication знает только объект (мы только что переключились на задний план? мы только что открылись?) итак, вы используете шаблон делегирования, чтобы получить его. Когда вы начинаете новый проект, Apple начинает с уже назначенного делегата приложения. Вы можете открыть MainWindow.nib и проверить делегат вашего приложения, чтобы узнать, как он связан с вашим экземпляром UIApplication (в данном случае с владельцем файла).

В общем, вы хотите поместить туда только код, связанный с базовой функциональностью вашего приложения. Запуск, выход, переход в фоновый режим и переход на передний план — это когда вы будете выполнять действия в делегате приложения.

Большинство всего остального должно входить в ваши контроллеры представления или объекты модели. Поскольку «делегат» — это просто шаблон проектирования, ваши контроллеры представления могут быть делегатами других объектов. Например, если вы представите a UITableView , вы назначите контроллер представления в качестве его делегата, чтобы реагировать на такие события, как выделение и прокрутка. У вашего приложения много делегатов, но у него есть только один делегат приложения.

Ответ №2:

На самом AppDelegate деле это просто «пусковая установка» для вашего приложения. Ie: вы вообще не должны писать в нем много кода.

Если вас интересует «настройка» кода, сделайте это в своем контроллере представления, в разделе viewDidLoad .