scene delegate에 대해 설명하시오.

seuhong·2024년 1월 29일
0

iOS interview Question

목록 보기
11/11
post-thumbnail

SceneDelegate는 iOS13 부터 등장한 개념.
따라서 기존 AppDelegate와 함께 해야할 운명.

SceneDelegate란?

  • iOS 13 부터 도입
  • 앱당 하나의 window만을 가졌던 과거에 비해 앱당 여러개의 scene을 가질 수 있게되며 생겨남
  • Scene에는 UI의 인스턴스를 나타내는 windows와 viewcontroller들이 들어있습니다.
  • scene에 해당하는 UIWindowSceneDelegate를 가지고 있어 UIKit과 앱간 상호작용에 사용됨.
  • Scene들은 같은 메모리와 앱 프로세스 공간을 공유하면서 동시에 실행됨.
  • 하나의 앱이 여러개의 scene과 scene delegate 객체를 동시에 활성화할 수 있게 도와줌

SceneDelegate로 인한 변화

SceneDelegate가 존재하기 이전 존재했던 App delegate는 크게 두 가지 역할을 하고 있었음.

(SceneDelegate 등장 이전)
해당 두 가지 역할은

  • application에게 process level의 event 를 전달
  • application에게 UI의 상태변화 전달

(SceneDelegate 등장 이후)

여러개의 scene의 등장

  • 하나의 App에 하나의 window를 가질 수 있었지만, window개념이 scene으로 대체됨
  • 이에따라 하나의 앱에서 여러개의 scene을 가질 수 있게됨

Scene이란

UIKit는 UIWindowScene 객체를 사용하는 앱 UI의 각 인스턴스를 관리합니다.
Scene에는 UI의 하나의 인스턴스를 나타내는 windows와 view controllers가 들어있습니다. 또한 각 scene에 해당하는 UIWindowSceneDelegate 객체를 가지고 있고, 이 객체는 UIKit와 앱 간의 상호 작용을 조정하는 데 사용합니다. Scene들은 같은 메모리와 앱 프로세스 공간을 공유하면서 서로 동시에 실행됩니다. 결과적으로 하나의 앱은 여러 scene과 scene delegate 객체를 동시에 활성화할 수 있습니다.

Apple 공식문서 참조

UILifeCycle 역할

  • 기존 AppDelegate의 역할인 UI 상태변화를 감지할 수 있는 메서드들이 SceneDelegate에 속하게 됨

Session LifeCycle 역할

  • scene session이 생성 혹은 삭제될 때 두 메서드가 추가됨
  • AppDelegate에서 Session LifeCycle을 관리하며 이를 통해 App에서 생성한 모든 scene의 정보를 관리함

Scene Session이란

UISceneSession 객체는 scene의 고유의 런타임 인스턴스를 관리합니다. 사용자가 앱에 새로운 scene을 추가하거나 프로그래밍적으로 scene을 요청하면, 시스탬은 그 scene을 추적하는 session 객체를 생성합니다. 그 session에는 고유한 식별자와 scene의 구성 세부사항(configuration details)가 들어있습니다. UIKit는 session 정보를 그 scene 자체의 생애(life time)동안 유지하고 app switcher에서 사용자가 그 scene을 클로징하는 것에 대응하여 그 session을 파괴합니다. session 객체는 직접 생성하지않고 UIKit가 앱의 사용자 인터페이스에 대응하여 생성합니다. 또한 위 3번에서 소개한 두 메소드를 통해서 UIKit에 새로운 scene과 session을 프로그래밍적 방식으로 생성할 수 있습니다.

Apple 공식 문서 참조

iOS 13 이후로 AppDelegate가 하는 것

  1. 앱의 가장 중요한 데이터 구조를 초기화하는 것
  2. 앱의 scene을 환경설정(Configuration)하는 것
  3. 앱 밖에서 발생한 알림(배터리 부족, 다운로드 완료)에 대응하는 것
  4. 특정한 scenes, views, view controllers에 한정되지 않고 앱 자체를 타겟하는 이벤트에 대응하는 것
  5. 애플 push notification 서비스와 같은 실행시 요구되는 모든 서비스를 등록하는 것
profile
완씨의 개발기록

0개의 댓글