Пользователь нажимает на иконку приложения на домашнем экране.
Каков процесс обработки события, когда пользователь нажимает на иконку приложения?
Пользователь нажимает на иконку приложения на домашнем экране.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
-
Пользователь нажимает на иконку приложения на домашнем экране.
-
SpringBoard(системное приложение для управления домашним экраном) перехватывает событие касания. -
SpringBoardопределяет, какое приложение соответствует нажатой иконке. -
SpringBoardотправляет IPC-сообщение (Inter-Process Communication) процессуlaunchd. -
launchd— системный процесс, отвечающий за запуск других процессов. Он получает запрос на запуск приложения. -
launchdпроверяет права доступа, подписывает приложение. -
launchdсоздает новый процесс для приложения. -
Первым делом в созданном процессе запускается функция
main(). -
Внутри
main()обычно вызывается функцияUIApplicationMain(). -
UIApplicationMain()выполняет следующие действия:- Создает объект
UIApplicationили его подкласс. - Создает объект делегата приложения (реализующего протокол
UIApplicationDelegate), если указан. - Создает объект главного цикла обработки событий (
run loop). - Загружает основной Storyboard или xib-файл (если указан в
Info.plist). - Создает главное окно (
UIWindow) и корневой контроллер представления (root view controller). - Вызывает метод
application(_:didFinishLaunchingWithOptions:)делегата приложения. - Запускает главный цикл обработки событий, делая приложение готовым к взаимодействию пользователя.
- Создает объект
-
Приложение становится видимым и готовым к работе.