오늘은 AppDelegate에 대해서 정리해보겠다. iOS 13 버전 이후에 SceneDelegate가 추가되어서 AppDelegate의 일부 역할은 SceneDelegate가 하게 되었고, AppDelegate는 Session Lifecycle에 대한 역할이 추가되었다. 또한 window -> scene으로 대체되었다.
(Scene : Scene에는 UI의 하나의 인스턴스를 나타내는 windows와 view controllers가 들어있다. 또한 각 scene에 해당하는 UIWindowSceneDelegate 객체를 가지고 있고, 이 객체는 UIKit와 앱 간의 상호작용을 조정하는 데 사용한다. Scene들은 가튼 메모리와 앱프로세스 공간을 공유하면서 서로 동시에 실행된다. 결과적으로 하나의 앱은 여러 scene과 scene delegate 객체를 동시에 활성화 할 수 있다.)
공식문서
앱의 공유 동작을 관리하는 메소드의 집합. AppDelegate의 처리 작업으로는
- 중앙 데이터 구조 초기화
- 앱 화면 configuring
- 메모리 부족 경고, 다운로드 완료 알림 등 앱의 외부에서 발생하는 알림에 대한 응답
- 앱을 대상으로, scenes, views, or view controllers과 관련이 없는 이벤트에 응답
- 앱의 푸시 알림 등 앱 출시 시 필요한 서비스 등록
이라고 정리해볼 수 있겠다.
쉽게 정리하기
AppDelegate는 앱의 실질적인 root 객체, 시스템과의 상호작용 관리.
역할과 메소드
역할
- application의 entry point
- session life-cycle 관리
- 앱 상태변화 전반적 관리
메소드
func application(UIApplication, willFinishLaunchingWithOptions: [UIApplication.LaunchOptionsKey : Any]?) -> Bool
- 앱 실행 후 유저 화면에 보이기 직전에 호출됨.
func applicationDidBecomeActive(UIApplication)
- 앱이 Active 상태로 전환된 직후에 호출됨.
func applicationWillResignActive(UIApplication)
- 앱이 포커스를 잃을 경우 호출됨(ex : 홈버튼).
func applicationDidEnterBackground(UIApplication)
- 앱이 백그라운드로 진입할 때 호출됨.
func applicationWillEnterForeground(UIApplication)
- 앱이 포어그라운드로 진입할 때 호출됨.
느낀 점
아직은 생소한 용어들이 많아 이해하기 어려운 점이 많았다. 다음에는 SceneDelegate에 대해서 알아봐야겠다는 것을 공부하며 느꼈다. 꼬리에 꼬리를 물며..... 열심히 공부하자
참고 자료
https://developer.apple.com/documentation/uikit/uiapplicationdelegate
https://velog.io/@yohanblessyou/AppDelegate%EC%9D%98-%EC%97%AD%ED%95%A0
https://sueaty.tistory.com/134
https://velog.io/@dev-lena/iOS-AppDelegate%EC%99%80-SceneDelegate
'iOS & Swift' 카테고리의 다른 글
[Swift] Swift 공식문서 정리 - 4(열거형) (0) | 2022.04.06 |
---|---|
[Swift] Swift 공식문서 정리 - 3(클래스 & 구조체) (0) | 2022.04.04 |
[Swift] Swift 공식문서 정리 - 2(제어문, 함수) (0) | 2022.03.29 |
[Swift] Swift 공식문서 정리 - 1(기본연산자, 문자열, 콜렉션 타입) (0) | 2022.03.29 |
[iOS] Key-Chain이란? (0) | 2022.03.26 |