iOS 13부터 도입된 개념으로써, 앱당 하나의 window만을 가졌던 과거에 비해 앱당 여러개의 scene을 가질 수 있게 되면서 생겼다. Scene에는 UI의 인스턴스를 나타내는 windows와 ViewController들이 들어있습니다. 또한 scene에 해당하는 UIWindowSceneDelgate를 가지고 있어 UIKit과 앱간의 상호작용에 사용됩니다. Scene들은 같은 메모리와 앱 프로세스 공간을 공유하면서 동시에 실행됩니다. 따라서 하나의 앱의 여러개의 scene과 scene delegate 객체를 동시에 활성화할 수 있게 됩니다.
ScenceDelegate는 AppDelegate에서 수행하던 UILifeCycle에 관한 부분을 수행합니다. 이에 따라 AppDelgate에서는 Scene Session을 통해 scene에 대한 정보를 받아 업데이트됩니다.
Scene Session이란 scene 고유의 런타입 인스턴스를 관리하는 객체로, 각 scene의 구성 세부사항을 보유합니다.
AppDelgate가 여전히 하는 것
1. 앱의 가장 중요한 데이터 구조를 초기화하는 것
2. 앱의 scene를 환경설정하는 것
3. 앱 밖에서 발생한 알림에 대응하는 것
4. 특정한 scence, view, ViewController에 한정되지 않고 앱 자체를 타겟하는 이벤트에 대응하는 것
5. 실행시 요구되는 서비스를 등록하는 것
앱이 실행중이지 않음
앱은 실행중이나 이벤트가 없는 상태
전화가 오거나 등등
이벤트를 받고있고 발생한 상태
앱이 백그라운드에 있으나 실행중인 코드가 있는 상태
앱이 백그라운드에 있고 실행중인 코드가 없는 상태, 기기 자원을 소모하지 않으나 언제든 종료될 수 있다.
4가지 속성의 큐를 만들 수 있다.
GCD를 사용한다면 스레드의 생성, 유지, 삭제 등을 개발자가 신경쓰지 않고 올바른 용도의 qos의 DispatchQueue에 작성하면 되고, 스레드 관리와 실행에 대한 책임을 운영체제 레벨로 넘겨버린다.
유저가 직접적으로 인지하지 않고(시간이 중요하지 않은) 작업, 데이터 베이스 미리 가져오기
일반적인 작업
앱 내에서 pdf파일 등을 여는 것과 같은
UIKit
Foundation Kit는 Cocoa Touch Framework에 포함되어 있는 프레임워크 중 하나로 String, Int 등의 원시 데이터 타입과 컬렉션 타입 및 운영체제 서비스를 사용해 앱의 기본적인 기능을 관리하는 프레임워크
Delegate란 어떠한 객체가 할 일을 확장해서 대신 처리해주는 역할을 해주는 객체를 의미한다. 객체 간의 결합성을 최소화 시키는 데에 장점이 있다.
참고자료
- https://github.com/lunchScreen/Interview_Questions/issues/41
- https://github.com/iOS-SOPT-iNNovation/iOS_Traning/issues/7
- https://github.com/iOS-SOPT-iNNovation/iOS_Traning/issues/8
- https://beenii.tistory.com/155
- https://www.notion.so/Foundation-Kit-0ba454fb3e744ebe9be8a9ad1c6d06e1
- https://github.com/iOS-SOPT-iNNovation/iOS_Traning/issues/14
- https://vincentgeranium.github.io/ios,/swift/2020/05/31/iOS-QnA-Summary-1.html
- https://github.com/ios-study-boost/iOSInterviewquestions/issues/31