Jaebi의 Binary는 호남선

AppDelegate & SceneDelegate 본문

Swift

AppDelegate & SceneDelegate

jaebijae 2024. 7. 21. 19:01

목차

    Preliminary

    • iOS 13 이상부터 AppDelegate의 UI LifeCycle 관리를 SceneDelegate가 하게됨

    AppDelegate

    • ~ iOS 12
      • Application에게 process level의 이벤트 발생을 알려줌
      • UI의 상태 변화를 알려줌

    • iOS 13 ~
      • Application에게 process level의 이벤트 발생을 알려줌
      • Application에게 scene session life cycle을 알려줌 (신규)
      • 기존 UI Life Cycle은 Scene Delegate가 담당하게 됨

    iOS 13부터의 AppDelegate

    • application의 entry point 역할
    • application level의 life cycle을 관리
      • `func application(_: didFinishLaunchingWithOptions: ) -> Bool`
        • application의 setup을 이 함수 내부에서 진행 (초깃값 셋팅)
        • 앱 실행시 최초로 실행할 코드 (ex. firebase configure)
        • 애플리케이션이 실행된 직후 사용자의 화면에 보여지기 직전에 호출
      • `func application(_: configurationForConnecting:options: ) -> UISceneConfiguration`
        • 새로운 scene이 생긴 뒤 실행
        • 새 Scene 만들때 UIKit를 위한 configuration data를 가져옴
      • `func application(_: didDiscardSceneSessions: )`
        • application이 scene을 버릴(삭제될) 때 불림
        • 사용자가 app switcher에서 하나 이상의 앱 Scene을 닫았음을 AppDelegate에게 전달
      • `func applicationWillTerminate(_ application: UIApplication)`
        • application 종료되기 직전에 호출

    SceneDelegate

    • 화면에 무엇(scene, window)를 보여줄 지 관리하는 역할
    • UI의 상태변화를 메소드를 통해 application에게 알리는 역할을 함
    • Scene Delegate가 가지는 메소드
      • `scene(_: willConnectTo: options:)`
        • scene이 앱에 추가될 때 호출
      • `sceneWillEnterForeground(_ :)`
        • Scene이 foreground 상태로 전환될 때 불림
          • ex) background → foreground,
        • Background나 Not Running에서 Foreground로 들어가기 직전에 호출
      • `sceneDidBecomeActive(_ :)`
        • scene이 active 상태가 되었을 때
          • ex) inactive → active,
          • scene이 setup되고 사용될 준비가 완료된 상태
          • 앱이 실제로 사용되기 전에 마지막으로 준비할 코드
      • `sceneWillResignActive(_ :)`
        • active → inactive 상태로 변할 때 불림
          • ex) 앱 사용 중 전화가 걸려올 때, 앱 스위처 화면으로 나갈 때
      • `sceneDidEnterBackground(_ :)`
        • Scene이 background로 전환될 때 불림
          • ex) foreground → background
        • User data저장 -> 앱이 종료(deallocated from RAM) 되는 시점을 예측할 수 없기 때문
      • `sceneDidDisconnect(_ :)`
        • Scene이 disconnect가 되었을 때 호출 (다시 연결될 수 있음)
          • ex) scene과 관련된 불필요한 자원들을 돌려주는 작업 수행

    예시 (SceneDelgate Life Cycle)

    • User가 앱을 킴
      • `scene(_: willConnectTo: options:)`
      • `sceneWillEnterForeground`
      • `sceneDidBecomeActive`
    • User가 Home 화면으로 간 경우 (SceneDelgate)
      1. `sceneWillResignActive` (active → inactive)
      2. `sceneDidEnterBackground` (foreground → background)
    • User가 Home 화면에서 background 된 앱을 다시 킨 경우
      • `sceneWillEnterForeground`
      • `sceneDidBecomeActive`

    Reference

     

     

    Swift 프로젝트 생성에서 Life Cycle 선택하기

    Xcode에서 iOS 개발 프로젝트를 실시하게 된다면, `Life Cycle` 을 선택하는 필드가 있다. 선택할 수 있는 선택지는 `SwiftUI App` 과 `UIKit App Delegate` 가 존재한다. 어떤 것을 선택해야할까?

    velog.io

     

    [iOS] AppDelegate & SceneDelegate

    AppDelegate / SceneDelegate과 관련된 면접 질문 SceneDelegate에 대해 설명하시오. 출처 상태 변화에 따라 다른 동작을 처리하기 위한 AppDelegate methods를 설명하시오. 출처 상태 변화에 따라 다른 동작은 iOS1

    sueaty.tistory.com

     

     

    [iOS] iOS13이후의 AppDelegate와 SceneDelegate

    iOS 12 이전의 appDelegate의 역할 1. 하나의 앱에 하나의 window가 존재! iOS 13 이후의 appDelegate와 scenceDelegate의 역할 1. window 개념이 scene으로 대체되고 하나의 앱에 여러 scene을 가질수 있게 되었다. 2. UIL

    jouureee.tistory.com

     

    [iOS] AppDelegate와 SceneDelegate

    Xcode에서 프로젝트를 생성하면 자동으로 AppDelegate.swift와 SceneDelegate.swift 파일이 추가되어 있어요! 오늘은 이 두 swift 파일에 있는 AppDelegate클래스와 SceneDelegate클래스에 대해서 알아보려고해요 😄

    velog.io

    'Swift' 카테고리의 다른 글

    SwiftUI - ViewModifier  (1) 2024.07.23
    SwiftUI - Navigation  (1) 2024.07.23
    App Lifecycle  (0) 2024.07.21
    SwiftUI - App Protocol  (0) 2024.07.21
    ARC (Automatic Reference Counting)  (0) 2024.07.20