-
scene, AppDelegate (iOS13 이후 도입)Swift/UIKit 2023. 9. 17. 17:49
scene 객체는 iOS 앱의 사용자 인터페이스 및 콘텐츠를 표시하는 데 사용되는 독립적인 화면.
각각의 scene은 앱이 실행 중에 생성되고 관리될 수 있는 독립적인 인스턴스
iOS 13부터 UIScene 프레임워크가 도입되었으며, 이를 통해 멀티태스킹과 다중 창 지원 등의 기능을 구현할 수 있게 되었습니다. 이전에는 하나의 UIWindow만 있어서 한 번에 하나의 화면만 보여줄 수 있었지만, UIScene을 사용하면 여러 개의 UIWindow와 해당하는 scene들을 생성하여 복수 개의 화면을 관리할 수 있습니다.
Scene 객체
멀티태스킹: 각각의 scene은 앱이 백그라운드에서 실행 중일 때도 동작하고, 복수 개의 scene이 함께 실행될 수 있습니다. 예를 들어, 메시지 앱에서 새로운 메시지가 도착한 경우, 새로운 메시지를 볼 수 있는 새로운 scene이 열릴 수 있습니다.
다중 창 지원: iPadOS에서는 여러 창으로 앱을 동시에 열고 각 창마다 별도의 scene을 가질 수 있습니다. 이렇게 함으로써 한 앱 내에서 다른 작업들을 병렬로 처리할 수 있습니다.
상태 및 구성 분리: 각각의 scene은 자체적으로 상태와 구성 정보를 가집니다. 따라서 서로 다른 화면들 사이에 데이터 공유와 분리된 설정 관리가 가능합니다.
SceneDelegate 객체각각의 scene에 대한 설정과 초기화 작업을 담당하며, UIWindowSceneDelegate 프로토콜을 준수하여 필요한 작업들을 처리합니다. SceneDelegate를 통해 적절한 UIWindow와 ViewController 등을 할당하여 해당 scene에 대한 컨트롤과 화면 전환 등 필요한 작업들을 구현할 수 있습니다.
따라서 Scene 객체는 iOS 앱에서 멀티태스킹 및 다중 창 지원 등 다양한 기능과 유용성 제공하기 위해 사용됩니다.AppDelegate
iOS 13 이후로 AppDelegate 클래스에는 몇 가지 변경 사항이 있었습니다. iOS 13에서 도입된 SceneDelegate를 통해 멀티태스킹 및 다중 창 지원을 구현하기 위해 AppDelegate의 역할이 일부 변경되었습니다. 기존에는 AppDelegate가 앱의 주요 라이프사이클 이벤트를 처리하고 UIWindow 인스턴스를 생성하고 설정하는 등의 작업을 담당. 그러나 iOS 13부터는 SceneDelegate가 새로운 scene과 관련된 작업을 처리하는 것으로 변경
AppDelegate는 앱 수준의 설정과 초기화 작업에 집중할 수 있게 됨. 따라서 iOS 13 이후의 AppDelegate에서는 다음과 같은 주요 변경 사항이 있습니다:
1. `application(_:didFinishLaunchingWithOptions:)` 메서드: UIWindow 인스턴스를 생성하고 rootViewController를 설정하는 대신, SceneDelegate에서 해당 작업들을 수행합니다. 따라서 기본적으로 아무런 코드도 포함되지 않은 빈 메서드로 남겨질 수 있습니다. 2. `application(_:configurationForConnecting:options:)` 메서드: 새로운 scene이 생성될 때 해당 scene에 대한 환경 설정(configuration)을 반환하는 역할입니다. 기본적으로 Default Configuration을 반환하도록 구현될 수 있습니다.
3. `application(_:didDiscardSceneSessions:)` 메서드: 사용자가 종료한 scene들에 대한 후처리 작업을 처리합니다. 기본적으로 아무런 코드도 포함되지 않은 빈 메서드로 남겨질 수 있습니다.
따라서 iOS 13 이후의 AppDelegate 클래스는 SceneDelegate와 함께 협력하여 앱 전체적인 설정 및 초기화 작업, 앱 간 공유 데이터 관리 등과 같은 역할을 담당합니다.
'Swift > UIKit' 카테고리의 다른 글
[UIKit] 시간에 따라 넘어가는 이미지 배너 (1) 2024.01.24 iOS앱 라이프 사이클 (0) 2023.05.07 화면전환 - 스토리보드 이용 (0) 2023.03.29