Archive/꼼꼼한 재은씨 시리즈

[iOS 13 이후 ] AppDelegate vs SceneDelegate 차이

lgvv 2021. 3. 8. 20:30

잘 쓰여진 글 : velog.io/@dev-lena/iOS-AppDelegate%EC%99%80-SceneDelegate

 

[iOS] AppDelegate와 SceneDelegate

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

velog.io

 

음,, 그러니까 정리하자면 내 기준으로는 백그라운드로 갈때나 포어그라운드로 올라올때 등등 

원래는 appDelegate에서 처리했었는데 scene가 담당함

 

로컬알림 이 부분의 코드가 씬 쪽으로 넘어갔다고 생각하자.

추후에 더 생각나면 수정하기

 

++ 추가 ++

SceneDelegate는 iOS 13부터 추가된 클래스로 UI 라이프 사이클을 관리하는 클래스

iOS12 까지는 하나의 앱이 하나의 윈도우만 가지기 때문에 AppDelegate가 UI의 라이프 사이클까지 관리를 겸했으나, iOS 13부터는 하나의 앱에 여러 개의 윈도우가 동시에 사용될 수 있게 됨에 따라 UI 라이프 사이클을 전담 관리해줄 클래스의 필요성 부각

이를 위해 추가된 클래스가 SceneDelegate

 

이 클래스는 AppDelegate가 담당하던 앱의 상태 변화, 즉 앱이 실행되고 백그라운드로 들어갔다가 다시 포그라운드로 나오는 등의 변화를 대신 감지하고 그에 맞는 메소드를 호출하는 역할을 합니다. 루트 뷰 컨트롤러에 대한 참조도 기존 AppDelegate 클래스에서 제공하던 것이, 이제는 SceneDelegate 클래스에서 제공하도록 변경됨.

 

반면 AppDelegate 클래스는 UI관리 역할에서 벗어나 프로세스 자체의 라이프사이클을 관리하는 역할에 집중하게 되었습니다. 이를 위해 앱의 데이터 구조 초기화나 푸시 알림 등의 서비스 초기화 앱 밖에서 발생한 알림에 대응하는 등의 일을 전담합니다.