UIApplication
iOS에서 실행되는 앱의 제어와 조정의 중심점
선언
@MainActor class UIApplication : UIResponder
모든 iOS 앱에는 단 하나의 UIApplication 인스턴스가 존재합니다.
앱이 시작되면 시스템은 UIApplicationMain(_: _: _: _:) 함수를 호출합니다.
이 함수는 UIApplication 객체의 싱글턴을 생성하는 작업을 합니다.
그다음 shared 클래스 메서드를 호출해 싱글턴 객체에 접근할 수 있습니다.
application 객체의 주요 역할은 사용자 이벤트로부터의 초기 라우팅을 처리하는 것입니다.
application 객체는 UIControl 클래스의 인스턴스인 control객체가 전달한 action 메시지를 target 객체에 전달합니다.
application 객체는 'open' 상태의 UIWindow 객체 리스트를 유지하며, 앱 내 UIView 객체들을 검색하는 데 사용합니다.
UIApplication 클래스는 UIApplicationDelegate 프로토콜을 준수하고 delegate를 정의합니다.
application 객체는 delegate에게 중요한 런타임 이벤트를 알리고 적절히 응답할 기회를 제공합니다.
앱은 openURL(_:) 메서드를 통해서 이메일이나 이미지 파일과 같은 리소스를 공동으로 처리할 수 있습니다.
이 클래스의 API를 사용하면 기기별 동작을 관리할 수 있습니다.
UIApplication 객체를 사용하여 다음을 수행합니다.
- 들어오는 터치 이벤트 일시 중단(beginIgnoringInteractionEvents())
- 더 이상 사용되지 않음
- 원격 알림 등록(registerForRemoteNotifications())
- 푸시 알림 서비스를 통해 원격 알림을 수신하도록 등록
- 실행 취소 UI 트리거(applicationSupportsShakeToEdit)
- 장치를 흔들면 실행 취소- 다시 실행 사용자 인터페이스가 표시되는 여부를 결정하는 Bool 값
- URL 스키마를 처리하도록 등록된 설치된 앱이 있는지 확인(canOpenURL(_:))
- 앱이 URL 체계를 처리할 수 있는지 여부를 나타내는 Bool 값을 반환
- 백그라운드에서 작업을 완료할 수 있도록 앱 실행 확장
- beginBackgroundTask(expirationHandler:): 앱이 백그라운드로 전환되는 경우 계속되어야 하는 작업의 시작 표시
- beginBackgroundTask(withName:expirationHandler:): 앱이 백그라운드로 전환되는 경우 계속되어야 하는 사용자 지정 이름으로 작업의 시작을 표시
- 로컬 알림 예약과 취소
- scheduleLocalNotification(_:) → 더이상 사용되지 않음
- cancelLocalNotification(_:) → 더이상 사용되지 않음
- 원격제어 이벤트의 수신 조정
- beginReceivingRemoteControlEvents(): 원격 제어 이벤트 수신을 시작하도록 앱에 지시
- endReceivingRemoteControlEvents(): 원격 제어 이벤트 수신을 중지하도록 앱에 지시
- 서브 클래싱
서브 클래싱 노트
대부분의 앱들은 UIApplication을 서브 클래싱 할 필요가 없습니다.
대신에 App delegate를 사용해서 시스템과 앱간의 상호작용을 관리합니다.
- sendEvent(_:): 앱의 적절한 응답자 객체에 이벤트 전달
- sendAction(_:to:from:for:): 선택기로 식별된 작업 메세지를 지정된 대상으로 보냄
'🍎 iOS > UIKit' 카테고리의 다른 글
[UIKit] UIView(3) (0) | 2022.03.30 |
---|---|
[UIKit] UIView(2) (0) | 2022.03.28 |
[UIKit] UIView(1) (0) | 2022.03.25 |
[UIKit] 앱의 라이프 사이클 (0) | 2022.03.22 |
UIKit (0) | 2022.03.21 |
댓글