Разница между AppDelegate.m и View Controller.m - PullRequest
13 голосов
/ 19 мая 2011

Может ли кто-нибудь сказать мне, когда мы используем AppDelegate.m и AppDelegate.h во время программирования iPhone?Я использовал только ViewController.m и ViewController.h для базового обучения.Я просто хочу знать, когда и почему используется AppDelegate.Благодарю.!!

Ответы [ 3 ]

22 голосов
/ 19 мая 2011

Оба определяют классы, но классы используются для разных вещей. ViewController.h / m определяет класс контроллера представления, который управляет иерархией представлений - в основном, одним экраном приложения. У вас может быть несколько экранов, каждый из которых имеет свой собственный контроллер вида.

AppDelegate.h / m определяет класс, который управляет приложением в целом. Приложение создаст один экземпляр этого класса и отправит сообщения этого объекта, которые позволяют делегату влиять на поведение приложения в четко определенные моменты времени. Например, -application: didFinishLaunchingWithOptions: отправляется, когда приложение завершает запуск, и готово сделать что-то интересное. Посмотрите на справочную страницу UIApplicationDelegate список сообщений, которые делегат приложения может реализовать для изменения поведения приложения.

18 голосов
/ 20 мая 2011

Я хотел бы добавить следующее к ответу @ Caleb.

Если не позаботиться о нем, AppDelegate может легко стать одним из наиболее доступных объектов в приложении.Я обычно воздерживаюсь от вызова методов в AppDelegate из любого из моих ViewControllers.Если в AppDelegate не нужно сообщать о чем-то, что могло бы повлиять на поведение всего приложения.

Я оставляю свой AppDelegate следующим образом:

  • инициализация: все, что нужно сделатьпри самом первом запуске (после установки или обновления)
  • миграция данных из версии в версию (например, если вы используете CoreData и миграции)
  • конфигурация объектов, связанных через IBOutlets из MainWindow.xib
  • определение начальной ориентации для запуска в
  • сохранение незафиксированных данных / состояния до завершения работы приложения или перехода в фоновый режим
  • регистрация в службе Apple Push Notification Service и отправкатокен устройства на наш сервер
  • , открывающий один из поддерживаемых URL-адресов приложений (например, maps: //)

Другие сценарии использования и подробное описание AppDelegate см. в Руководство по программированию приложений iOS .

6 голосов
/ 20 мая 2011

Контроллер .h / m отвечает за контроль соединения между вашей моделью и вашим представлением (подробнее о MVC здесь ).

AppDelegate .h / m отвечает за жизненный цикл вашего приложения.Что делать, когда пользователь нажимает кнопку «Домой» и выходить из приложения, что делать, когда приложение входит в фоновый режим.Вещи как это.

...