티스토리 뷰

728x90

SceneDelegate란?

iOS13 이후 UI생명주기에 관한 이벤트를 처리하기 위해 사용하는 객체 입니다.

화면에 무엇을 보여줄지 관리하는 역할을 하며, iOS 13부터 window의 개념이 scene으로 대체 되었습니다.

 

why?

아이패드와 같이 큰 화면의 하나의 앱에서 2개 이상의 화면을 보여주기 위해 Scene 개념이 도입 되었습니다.

 

SceneDelegate Methods

 

메소드 (펼쳐보기)

더보기

scene(_: willConnectTo: option:)

  • application(_: didFinishLaunchingWithOptions:) 메소드와 유사합니다.
  • UISceneSession LifeCycle 에서 가장 처음 불리는 메소드로 첫 content view, 새로운 UIWindow를 생성하고 window의 rootViewController를 설정합니다. 여기서의 window = app이 작동하는 viewport
  • 첫 view를 만들때, 과거에 disconnected된 UI를 되돌릴때도 사용합니다.

 

sceneDidDisconnect(_:)

  • scene의 연결이 해제될 때 호출 됩니다. (다시 연결 될 수 있습니다.)
  • 필요없는 자원을 돌려주는 역할
  • 디스크, 네트워크를 통해 쉽게 불러올 수 있거나 생성이 쉬운 데이터를 돌려줍니다.
  • 사용자의 input 같은 재생성 어려운 데이터는 갖고 있게 작업해줘야 합니다.

 

sceneDidBecomeActive(_:)

  • inactive → active
  • app switcher에서 해당 앱이 선택될때, (*app switcher: 홈 버튼을 두번 누르거나, 화면 하단 바 (홈 인디케이터)를 위로 올렸을 때 보이는 화면)
  • scene이 setup되고 화면에 보여지면서 사용할 준비가 된 상태.
  • inactive가 되면서 멈춘 task를 재실행 할 때도 사용.

 

sceneWillResignActive(_ scene:UIScene)

  • active → inActive
  • 다른화면으로 전환
    • ex) 앱 사용중 전화가 올때, 상단을 쓸어내려 알림 모달을 띄울때, 하단을 쓸어올려 (와이파이, 밝기조절, 블루투스 등 보이는 화면.

 

sceneWillEnterForeground(_ scene: UIScene)

  • background → foreground
  • Foreground로 진입할 때 호출 (2가지 경우)
  • 앱이 실행되고 active 상태가 될 때

 

sceneDidEnterBackground(_:)

  • foreground → background
  • 데이터를 저장, state 정보 저장, 공유된 리소스 돌려주는 작업

 

 


iOS 13 이후 AppDelegate → SceneDelegate 메소드 변화

 

728x90

'iOS' 카테고리의 다른 글

[Swift] 소멸자 (Deinitialization)  (0) 2022.05.15
[Swift] 고차함수 - reduce  (0) 2022.05.13
[Swift] enumerated() 메소드  (0) 2022.05.08
[iOS] MVC, MVP, MVVM 비교  (0) 2022.05.06
[iOS] TableView (programmatically)  (3) 2022.05.04