[iOS]AppDelegate와 SceneDelegate (1)

Ruel·2022년 11월 16일
1

iOS

목록 보기
1/1

Xcode에서 프로젝트를 생성하고 보면
자동으로 추가되어있는 파일 AppDelegate.swift, SceneDelegate

여태 정확하게 인지하지 못하고 여기 저기 설명에 적힌대로 코드를 적다보니
도대체 이녀석들이 무엇을 하는 녀석들일까 고민이 들더라구요
그래서!
이녀석들에 대해서 알아 보려합니다.


iOS13 이후 AppDelegate에서 분리되어 AppDelegateSceneDelegate 두개의 Delegate가 생겼어요.

AppDelegate?

iOS13 이전의 AppDelegate

이전의 AppDelegated에는 두가지 기본 역할이 있었어요.

  1. 애플리케이션에 프로세스 수준 이벤트를 알리는 것

    • 시스템은 프로세스가 시작되거나 종료되려 할 때 Appdelegate에 알려줌
  2. 애플리케이션에 UI 상태를 알리는 것

    • did enter foreground and will resign active와 같은 몇 가지 방법을 통해 시스템에서 UI상태를 알려줌

iOS13 이전 버전의 애플리케이션에는 하나의 프로세스와 일치하는 하나의 인터페이스 인스턴스가 있었기 때문에 위 두개의 역할을 하나의 AppDelegate에서 수행해도 문제가 없었어요.

그러나 iOS13 버전 이후에는 애플리케이션은 하나의 프로세스만 공유하지만 여러 사용자 인터페이스 인스턴스 또는 장면 세션을 가질 수 있기 때문에 Appdelegate의 책임이 약간 변경되었어요.

프로세스 이벤트 및 수명 주기를 AppDelegate가 담당하지만
-> 이제는 UI수명 주기와 관련된 어떤 것도 AppDelegate는 책임지지 않아요.

따라서 UI수명 주기는 UIScene Delegate 가 모두 처리해요.

여기서 하나! AppDelegate가 받는 책임이 하나 추가되었어요

  • 새 장면 세션이 생성되거나 기존 장면 세션이 삭제될 때 시스템에서 AppDelegate에 알려줌

여기 까지 이전의 AppDelegate에서 AppDelegate 와 SceneDelegate가 나눠진 얘기를 해봤는데
다음은 AppDelegate와 SceneDelegate를 구체적으로 알아봅시다.

참고

https://developer.apple.com/videos/play/wwdc2019/258/

profile
비전공 iOS 개발자

0개의 댓글