iOS
[iOS] AppDelegate에 대해서
guswlsdk
2023. 3. 29. 18:47
반응형
🙋♂️ AppDelegate 란?
- app delegate는 AppDelegate의 인스턴스이다.
- app delegate는 공유 동작을 관리한다.
- app delegate는 사실상 앱의 root object이며, UIApplication과 함께 시스템과 상호작용 하는 것을 관리한다.
- UIApplication 객체처럼 UIKit은 앱 실행 주기 초반에 app delegate를 생성하므로 앱의 실행 주기에 항상 존재한다.
🙋♂️ AppDelegate의 역할(iOS 13 이후)
- 앱의 핵심 데이터 구조 초기화
- 앱의 Scene 구성
- 메모리 부족 경고, 다운로드 완료 알림 등 앱 외부에서 발생하는 알림에 응답
- 타겟이 특정한 scene, view, viewControllers이 아닌 앱 자체의 이벤트에 응답
- 앱 푸시 알림과 같이 앱 실행 시점에 필요한 서비스 등록
🙋♂️ iOS 13 이전과 이후
- app delegate가 앱 내에 주요 생명 주기를 관리한다. (iOS 13 이후부턴 SceneDelegate가 관리함)
- 그리고 AppDelegate에 UILifecycle이 삭제되고 Session Lifecycle에 대한 역할이 추가되었다.
- Scene Session이 생성되거나 삭제 될 때 AppDelegate에 알리는 메서드이다.
- Scene Session은 앱에서 생성한 모든 Scene의 정보를 관리한다.
추후에 Scene에 대해서도 공부하기...
🙋♂️ UIApplication
- 앱이 시작되면 시스템에서 UIApplicationMain 함수를 호출하며(AppDelegate에 있는 @main), 다른 작업 중에서도 shared로 접근하여 사용할 수 있는 싱글톤의 UIApplication 객체를 생성해준다.
- 이 객체는 Control 객체(UIControl 클래스의 인스턴스)에 의해 전달된 action messages를 적절한 target objectd에 전달한다.
- 또한 이 객체는 앱 내의 UIView 객체를 찾는 데 사용할 수 있는 열려 있는 UIWindow 객체의 리스트를 유지한다.
- UIApplication 클래스는 UIApplicationDelegate 프로토콜을 채택하는 delegate를 정의한다.
- UIApplication는 앱이 시작하거나, 메모리 부족 경고, 앱 종료 등의 중요한 런타임 이벤트의 delegate에게 알려 적절하게 대응할 수 있는 기회를 제공한다.
- 앱은 이 방법을 통해 이메일이나 이미지 파일과 같은 자원을 협력적을 처리할 수 있다. 예를 들어 이메일 URL로 이 메소드를 실행시키는 앱의 경우에 이메일 앱을 실행시키고 메시지를 보여주는 것이다.
- AppDelegate의 인스턴스는 앱 전체에 오직 한 개만 존재하므로(싱글톤) 모든 뷰 컨트롤러에서 접근 할 수 있다.
- AppDelegate에 값을 저장하면 앱이 종료되지 않는 한 값을 유지할 수 있다. (종료 시 데이터 휘발)
- 앱의 UIApplication 객체는 사용자 이벤트가 발생할 때 초기 경로를 처리한다.
반응형