sourcecode

장면 위임자와 앱 위임자의 차이점

copyscript 2023. 8. 7. 22:53
반응형

장면 위임자와 앱 위임자의 차이점

인 마이 스위프트UI 프로젝트 보기AppDelegate뿐만 아니라 서류철SceneDelegate파일.

그들 사이의 차이점은 무엇입니까?

예를 들어 의 방법 사이에SceneDelegate

scene(_:willConnectTo:options:)

그리고 그 안에AppDelegate

application(_:didFinishLaunchingWithOptions:)

두 개의 파일은 앱을 전체적으로 실행하는 데 필요한 작업과 백그라운드에서 실행하는 것을 지원하는 하나의 "인스턴스"에 필요한 작업으로 구분됩니다.이것은 데이터베이스를 한 번 구성하지만 창별로 다른 값 집합을 표시하는 것과 같습니다.

글로벌 버전과 프라이빗 버전으로 생각할 수 있습니다.하나는 공유되고 다른 하나는 개별 소유자로 제한됩니다.어떤 면에서, 그것들은 여러분이 이름으로 기대하는 것과 정확히 같습니다.

멀티 윈도우 지원이 진행 중입니다.

다음에 새로운 Xcode 프로젝트를 만들 때는 AppDelegate가 두 개로 분할된 것을 볼 수 있습니다.AppDelegate.swift 및 SceneDelegate.swift를 선택합니다.이는 iPadOS와 함께 제공되는 새로운 멀티 윈도우 지원의 결과이며, 앱 대표자의 작업을 효과적으로 둘로 나눕니다.

iOS 13부터 앱 대리인은 다음을 수행해야 합니다.

  1. 앱 기간 동안 필요한 모든 데이터를 설정합니다.
  2. 사용자와 공유하는 파일과 같이 앱에 중점을 둔 모든 이벤트에 응답합니다.
  3. 푸시 알림과 같은 외부 서비스에 등록합니다.
  4. 초기 장면을 구성합니다.

반대로, 장면 대리인은 앱의 사용자 인터페이스 인스턴스 하나를 처리하기 위해 그곳에 있습니다.따라서 사용자가 앱을 보여주는 두 개의 창을 만든 경우 두 개의 장면이 모두 동일한 앱 대리인에 의해 지원됩니다.

이러한 장면은 서로 독립적으로 작동하도록 설계되었습니다.따라서 응용프로그램이 더 이상 백그라운드로 이동하지 않고 개별 장면이 이동합니다. 사용자는 다른 장면을 열어둔 상태에서 한 장면을 백그라운드로 이동할 수 있습니다.

제공: https://www.hackingwithswift.com/articles/193/whats-new-in-ios-13

AppDelegate 애플리케이션 레벨 이벤트(예: 애플리케이션 시작), 애플리케이션 수명 주기 및 설정을 처리합니다.

SceneDelegate 화면에 표시되는 내용(Windows 또는 Scene)을 처리하고 앱이 표시되는 방식을 관리합니다.

scene(_:willConnectTo:options:) 는 UISceneSession 수명 주기에서 호출되는 첫 번째 메서드입니다.이 메서드는 새 UI 창을 만들고 루트 보기 컨트롤러를 설정한 다음 이 창을 표시할 키 창으로 만듭니다.

application(_:didFinishLaunchingWithOptions:) 응용 프로그램이 시작되고 응용 프로그램 설정이 완료된 위치에서 호출됩니다.이전 iOS 13에서는 이 방법을 사용하여 UIWindow 개체를 구성하고 ViewController 인스턴스를 UIWindow 개체에 할당하여 화면에 표시했을 수 있습니다.iOS 13부터는 애플리케이션에 씬(scene)이 있는 경우 AppDelegate가 더 이상 이를 처리하지 않고 씬(scene)Delegate로 이동합니다.

보낸이: https://medium.com/ @kalyan.parise/이해-delay-delay-app-app-7503d48c5445

멀티플랫폼

버려진 카트의 답변 외에도, Xcode 11 이후, 당신은 다음과 같은 새로운 옵션을 가지고 있습니다.Multiplatform시작 템플릿으로 선택할 수 있습니다.여기에는 다음이 포함된 파일만 표시됩니다.

@main
struct MyMultiplatformApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

알 수 .@main 5의 경우)와 (Swift 5.3의 경우)를 포함합니다.WindowGroup모든 애플 플랫폼에서 앱의 여러 창을 관리합니다.따라서 SceneDelegate 및 AppDelegate에 대한 걱정은 더 이상 필요하지 않습니다.

예를 들어 이전 앱 대리인처럼 사용해야 할 경우 해당 알림을 구독하거나UIAppDelegateAdapter여기서 설명한 대로 포장지

언급URL : https://stackoverflow.com/questions/56498099/difference-between-scenedelegate-and-appdelegate

반응형