UIKit Code base

봄이아빠·2024년 12월 6일
1

UIKit

목록 보기
3/5

Code base

1. Main storyboard 삭제

2. project - build setting 에서 Storyboard File Base Name - main 삭제

3. Info.plist 에서 Storyboard Name - Main 삭제

4. Scene Delegate에서 진입 뷰 설정

App Delegate 대신 가능하지만 권장x -> multi-window 지원을 위해 도입된 Scene Delegate를 사용하는 것이 더 권장 됨

why?
  • AppDelegate
    • 앱의 전체 생명 주기와 관련된 작업을 담당함(푸시 알림, 백그라운드 작업 등)
  • SceneDelegate
    • ios13 이후 지원하기 시작했으며 개별 scene의 생명주기 등을 담당함
    • scene과 밀접한 rootViewController나 UI상태 복원 등을 맡는 것이 자연스러움
    • multi scene이 개별적인 초기화를 갖기에도 sceneDelegate가 자연스러움

만약 appDelegate가 scene들의 초기화를 맡게 된다면 모든 scene들이 동일한 초기화를 갖게 됨
반면 sceneDelegate가 맡으면 각 scene마다 초기화를 갖고 더욱 조직화, 모듈화 된 코드가 되고 가독성이 높아짐

scene method 설정


상기 했듯 ios13 이후 지원 시작하며 유연성을 위해 optional로 정의되어있지만 직접 초기화 하기 위해서는 필수적인 메서드.

scene: UIScene: 현재 연결된 또는 생성된 scene
session: UISceneSession: 세션 정보, 설정, 상태 등(multi scene은 scene마다 고유한 session이 존재함)
connectionOptions: UIScene.ConnectionOptions: scene이 연결될 때의 추가 정보를 담음(푸시 알림이나 url 등으로 열렸다는 정보 등)

guard let windowScene = (scene as? UIWindowScene) else { return }

scene이 UIWindowScene인지 체크 하여 다운캐스팅하게 됨.
>> ios에서 앱의 window를 관리하는 객체로 만들기 위함.
UIWindow는 UIWindowScene과 연결되어야 작동가능하기 때문

이후 window를 설정한 후 sceneDelegate의 window를 원하는 scene으로 설정하게 됨

0개의 댓글