[iOS] AppDelegate 란?

CastleSilver·2023년 4월 11일
0

iOS 공부

목록 보기
4/13
post-thumbnail
var window: UIWindow?

기능


1. AppDelegate 클래스 정의

어플리케이션이 그려질 Window를 생성하고(~*ios12), 상태 변화에 반응할 수 있게 한다. AppDelgate 클래스는 UIApplicationDelegate 프로토콜을 채택해야한다.

2. 앱에 대한 진입점과 입력 이벤트를 앱에 전달하는 실행 루프를 생성

이 작업은 파일 상단에 나타나는 @Main에 의해 수행된다.(Swift 5.3 이전에는 @UIApplicationMain이 이 작업을 수행했다. @Main과 @UIApplicationMain에 대한 비교는 이 블로그를 참고. 간단하게 설명하자면, @UIApplicationMain는 클래스에서만 사용가능하지만 @Main은 타입 기반이기에 확장성을 지닌다.)


버전에 따른 차이


~ iOS 12

  • AppDelegate
    • Process Lifecycle
      • App Launched
      • App Terminated
    • UI Lifecycle
      • Entered Foreground
      • Become active

iOS 13~

  • AppDelegate
    • Process Lifecycle
    • Session Lifecycle
      • Session Created
      • Session Discarded
  • SceneDelegate
    • UI Lifecycle
      • Entered Foreground
      • Become active

Session Lifecycle이 추가 되었고, window 설정이 SceneDelegate로 옮겨졌다. 하나의 화면에서 여러개의 다중 화면을 지원하게 되면서 scene 개념이 추가되었다.


역할


  1. 앱의 중요 데이터 구조를 초기화
  2. 앱의 scene의 환경설정
  3. 앱 밖에서 발생한 알림(배터리 부족 경고, 다운로드 완료 알림 등)에 대응
  4. 특정한 scenes, views, view controllers에 한정하지 않고 앱 자체를 타겟하는 이벤트에 대응
  5. 애플 푸쉬 알림과 같이 실행시 요구되는 모든 서비스를 등록
  6. 앱이 foreground나 background로 이동할 때 앱의 상태를 업데이트하는 등의 앱의 Lifecycle 이벤트를 관리(ios 13부터는 SceneDelegate.swift가 담당)
profile
우당탕탕 비전공자 개발자

0개의 댓글