Это старый вопрос, но я только что задал себе тот же вопрос сегодня. Я думаю, что класс AppDelegate нельзя классифицировать как просто Controller . Он контролирует окно и устанавливает свой корневой контроллер, чтобы его можно было классифицировать как View Controller (примечание: UIWindow наследует от UIView). Но он также выполняет больше задач, связанных с моделью, таких как сохранение данных при завершении работы приложения. Таким образом, его можно считать контроллером модели или также связанным с уровнем доступа к данным.
Он также отвечает за обработку открытия URL. Это может вызвать изменение вида, но также определенно потребует выполнения задач, связанных с моделью, таких как анализ, сохранение, обновление, аутентификация и т. Д. Если представление / модель связаны с помощью KVO, простое обновление модели может привести к обновлению требуемых видов. Я чувствую, что это будет гораздо лучше. Кроме того, тот факт, что по умолчанию весь стек основных данных добавляется в AppDelegate, устраняет его от того, чтобы быть связанным только с View.
Думаю, тот факт, что он отвечает за все, что связано с приложением, приводит к тому, что оно имеет несколько целей. Возможно, именно поэтому разработчики в конечном итоге бросают все и вся здесь. Это менеджер приложения как в смысле корневого контроллера, уровня сервиса приложения, так и менеджера модели приложения.
Поскольку AppDelegate является точкой входа в приложение (для разработчика), имеет смысл говорить об этом с точки зрения приложения. Приложение завершается, приложение входит в фоновый режим и т. Д. Мы говорим о приложении как о Model сущности.