AppDelegate

Tabber·2021년 8월 8일
0

앱공부정리

목록 보기
4/4

이 글은 Zedd님의 블로그를 보고 정리하는 글입니다.

AppDelegate.swift의 역할

AppDelegate.swift 라는 소스 파일은 두가지 역할을 한다.

AppDelegate클래스를 정의한다.

import UIKit

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
 . . . 
}

그 전에 알아야 할 용어가 있다. 바로 app delegate 이다.(방금 얘기하고있는 AppDelegate와는 다르다)
app deleagte는 위에서 말한 AppDelegate 클래스의 인스턴스 이다.
이 app delegate는 우리의 앱의 객체이다. app delegate는 앱의 상태에 따라 응답하는 콘텐츠가 그려지는 창(window)을 만든다.

즉, AppDelegate.swift가 있으므로 AppDelegate클래스가 만들어지고, 이 AppDelegate클래스에 인스턴스인 app delegate가 우리의 앱 내용이 그려질 창을 만든다는 것이다.

이게 역할 중 하나이다.

Appdelegate.swift는 entry point와, 앱의 입력 이벤트를 전달하는 run loop를 생성한다.

import UIKit

@UIApplicationMain // 이게 핵심
class AppDelegate: UIResponder, UIApplicationDelegate {
 . . . .
}

이 작업은 UIApplicationMain속성에 의해 수행되며, 이 속성은 파일의 맨 위에 나타난다.

UIApplicationMain 속성을 사용하는 것은 UIApplicationMain함수를 호출하고 AppDelegate클래스의 이름을 delegate 클래스에 전달하는 것과 동일하다.

이에 대한 응답으로, 시스템은 응용프로그램 객체(application object)를 생성한다.
응용 프로그램 객체는 app의 life cycle을 담당한다.
또한 시스템은 AppDelegate 클래스의 인스턴스를 생성하고 이를 응용프로그램 객체에 할당한다.
마지막으로, 시스템을 앱을 실행한다.

이게 AppDelegate.swift가 하는 일이다.
좀 더 부가적인 설명을 하자면

AppDelegate클래스는 새 프로젝트를 만들 때 마다 자동으로 생성된다.
딱히 이상한 일만 하지 않는다면 Xcode에서 제공하는 이 클래스(AppDelegate)를 사용하여 앱을 초기화 하고 app-level이벤트에 응답해야 한다.

AppDelegate클래스는 UIApplicationDelegate 프로토콜을 채택해야 한다.
위 프로토콜은 앱을 세팅하고, 앱 상태 변화에 응답하며 다른 app-level이벤트를 처리하는데 사용하는 여러가지 방법을 정의한다.

profile
iOS 정복중인 Tabber 입니다.

0개의 댓글