Жизненный цикл iOS приложения

Жизненный цикл iOS приложения

Прежде всего, приложения для iOS и Android имеют разную структуру приложений, что также приводит к различному жизненному циклу приложений. Итак, давайте посмотрим на структуры приложений. 

На iOS до версии 13 это был жизненный цикл на основе приложений. Все приложение имело один экземпляр, и все события, связанные с его состоянием, были доставлены в UIApplicationDelegate. В результате этого поток приложений также повлиял на все приложение, включая внешние дисплеи.

Влияние потока приложения

Начиная с iOS 13, жизненный цикл приложения был переработан. Теперь, если приложение поддерживает сцены, то UIKit (платформа, связанная с интерфейсом) предоставляет отдельный жизненный цикл для каждой сцены. UIScene - объект, представляющий один экземпляр пользовательского интерфейса вашего приложения.

Но вы все равно должны помнить, что приложение имеет поток UIApplicationDelegate, который связан с глобальным состоянием приложения. Например, если в вашем приложении есть 2 сцены и вы отправляете одну из них в фоновый режим, UISceneDelegate будет уведомлен об этом, но UIApplicationDelegate этого не сделает, и будет уведомлен только в том случае, если все экземпляры сцен перейдут в фоновый режим. 

RunLoop

Объект RunLoop обрабатывает входные данные из источников, таких как события мыши и клавиатуры из оконной системы и объектов порта. Объект RunLoop также обрабатывает события таймера.

Работа приложения от запуска процесса до первой итерации бесконечного цикла Runloop main потока

Данное изображение показывает работу приложения от запуска процесса до первой итерации бесконечного цикла Runloop main потока

Ваше приложение не создает и явно не управляет объектами RunLoop. Система создает объект RunLoop по мере необходимости для каждого объекта потока, включая основной поток приложения. Если вам нужно получить доступ к циклу выполнения текущего потока, используйте метод класса current.

Таймер
Обратите внимание, что с точки зрения RunLoop объекты Timer не являются “входными данными” — это особый тип, и они не вызывают возврата цикла выполнения при запуске.

Полезные ссылки:

Телеграм: https://t.me/the_cybermania

Read More