iOS 13 이전, 이후 Application의 Life Cycle

w0308h 2022년 12월 30일 PM 01:39 8 0
w0308h Profile Image Level 9

Scene based Life-Cycle (iOS 13.0 이후)

  • 사용자나 시스템이 scene을 요청하게 되면, UIKit은 unattached 상태의 scene을 생성.
  • 사용자가 scene 요청 시 foreground inactive 상태에서 active 상태로 빠르게 전환하여 화면을 보여준다.
  • 시스템이 scene 요청 시 background 상태로 전환. Ex, 위치 이벤트
  • 사용자가 UI를 닫으면 foreground inactive 상태에서 background로 전환되고, 결국 suspended 상태가 된다.
  • UIKit은 리소스를 회수하기 위해서 background 상태, suspended 상태를 언제든지 unattached 상태로 전환할 수 있다.

App based Life-Cycle (iOS 12 이전)

  • 사용자나 시스템이 window를 요청하게 되면, window를 생성한다.
  • UIKit은 UI가 화면에 나타날지 여부에 따라 background 혹은 Inactive 상태로 전환한다.
  • 화면에 나타나면 앱을 active 상태로 전환
  • 그 후 앱이 종료될 때까지 앱은 active, background 상태에서 변동

iOS 13 이전, 이후 변동

  • iOS 12까지는 하나의 앱에 하나의 window만 가질 수 있었다.
  • iOS 13 이후 window 개념이 scene으로 바뀌고, 하나의 앱에 여러 개의 scene을 가질 수 있게 되었다.
  • 기존(iOS 12까지)에 life cycle은 AppDelegate가 담당했는데, iOS 13 이후에 scene이 등장하면서 SceneDelegate가 라이프 사이클을 관리
  • 기존과 같이 앱의 시작, 종료와 같은 기본 이벤트는 여전히 AppDelegate가 담당한다.

AppDelegate.swift

  • Scene-based app이라도 앱의 시작, 종료 기본 이벤트를 AppDelegate에서 관리한다. (didLaunchingWithOptions 등)
  • 앱 시작 시 UIKit은 UIApplication과 동시에 app delegate를 생성하고, 그 후 메인 루프가 시작
  • UIApplication과 함께 작동하여 시스템과 상호작용 관리
  • 역할
    • 앱 중앙 데이터 구조 초기화
    • 앱의 scene 구성
    • 메모리 부족 경고 등 앱 외부 알림에 대응
    • 앱 자체를 대상으로 scene, view, view controller에 국한되지 않는 이벤트에 대응
    • 푸시 알림 서비스 등록 등

SceneDelegate.swift

  • iOS 13이후의 scene의 라이프 사이클 관리
댓글