김경록의 앱 개발 여정

[Swift] iOS 18.4 를 앞두고 알아야 할 SceneDelegate 기반 앱 구조 전환 본문

TIL

[Swift] iOS 18.4 를 앞두고 알아야 할 SceneDelegate 기반 앱 구조 전환

Kim Roks 2025. 5. 13. 10:17

iOS 앱 개발자라면 누구나 익숙한 AppDelegate 방식. 앱 생명주기의 중심이었죠.

그런데 이제는… Apple이 SceneDelegate를 강제하려고 합니다.

정말 AppDelegate는 사라지는 걸까요?
그리고 우리는 지금 무엇을 준비해야 할까요?


🌀 SceneDelegate가 뭐길래?

iOS 13부터 도입된 Scene 기반 Life Cycle은 앱을 하나 이상의 "Scene"으로 나누어 관리할 수 있게 해줍니다.
간단히 말하면, 앱의 UI 상태를 독립적으로 관리할 수 있는 구조죠.

예를 들어 iPad에서 여러 개의 앱 창(윈도우)을 동시에 띄울 수 있는 것도 Scene 구조 덕분입니다.

🔥 그런데 왜 지금 이렇게 중요한가?

Apple은 iOS 18.4부터 다음 조건을 강제합니다

✅ Info.plist에 UIApplicationSceneManifest 키가 반드시 있어야 함

✅ 앱은 최소 하나 이상의 UIScene을 선언해야 함

즉, SceneDelegate를 도입하지 않으면 앱이 실행되지 않을 수 있습니다

 

 

🛠️ 기존 프로젝트는 어떻게 해야 할까?

1. SceneDelegate.swift 파일 추가

 
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    var window: UIWindow?
    
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // UIWindow 설정 및 초기 뷰컨트롤러 연결
    }
}

 

2. Info.plist에 Scene 설정 추가

 

3. AppDelegate.swift 정리

application(_:configurationForConnecting:) 메서드를 구현해 Scene을 구성합니다.

✨ SwiftUI는 이미 Scene 기반

SwiftUI 앱은 이미 @main과 WindowGroup 등을 통해 Scene 구조를 사용 중입니다.
따라서 SwiftUI 앱이라면 걱정할 필요는 없습니다. 다만 일부 UIKit 연동 시 Scene 구조를 명확히 이해해 두는 것이 좋습니다.

SwiftUI의 표준화는 좀 더 걸릴거라고 생각중이었는데 이것도..?

 

✅ 마무리: 지금 바로 점검하자

이제 더 이상 SceneDelegate는 선택이 아닙니다.

  • SceneDelegate.swift 도입
  • Info.plist에 SceneManifest 설정
  • AppDelegate에서 역할 분리

🚀 아래 문서 원문에서 더 자세한 내용을 다루고 있습니다 마이그레이션 가이드 또한 제공하니 확인하세요

https://developer.apple.com/documentation/technotes/tn3187-migrating-to-the-uikit-scene-based-life-cycle