AppDelegate 에 있는 메소스들 정리

2019-09-08
iOS

안녕하세요. 도미닉입니다.

AppDelegate 가 모두 익숙하실 것이라고 생각합니다.

AppDelegate.swift 는 싱글뷰 프로젝트를 생성하면 가장 위에 보이는 파일이죠.

그렇다면 이 AppDelegate 에는 어떤 메소드들이 선언되어 있을까요?

application

첫번째로 보이는 메소드는 application 입니다.

그렇다면 application 은 어떤 역할을 하는 메소드일까요?

이름에서도 알 수 있듯이 어플리케이션이 실행될 때 딱 한번 실행되는 메소드입니다.

// Override point for customization after application launch.

주석에도 친절하게 어플리케이션이 시작될 때 원하는 작업을 추가할 수 있다고 적혀있네요.

applicationWillResignActive

두번째 메소드는 applicationWillResignActive 입니다.

긴 주석이 두개나 적혀있네요.

해석해보고 어떤 역할을 하는 메소드인지 알아보겠습니다.

1
2
3
응용 프로그램이 활성 상태에서 비활성 상태로 이동하려고 할 때 전송됩니다. 이는 특정 유형의 일시적인 중단 (예 : 전화 또는 SMS 메시지 수신) 또는 사용자가 응용 프로그램을 종료하고 백그라운드 상태로 전환하기 시작할 때 발생할 수 있습니다.

이 방법을 사용하여 진행중인 작업을 일시 중지하고 타이머를 비활성화하고 그래픽 렌더링 콜백을 무효화하십시오. 게임은 이 방법을 사용하여 게임을 일시 중지해야합니다.

우리의 친절한 구글 번역기가 번역을 잘해줬네요.

앱을 사용하다가 전화가 오는 등의 일시적인 중단이나 홈 버튼을 눌러서 앱을 종료하면 수행되는 메소드라고 합니다.

applicationDidEnterBackground

세번째의 메소드는 applicationDidEnterBackground 입니다.

이번에도 주석을 번역해보겠습니다.

1
2
3
이 방법을 사용하여 공유 리소스를 해제하고, 사용자 데이터를 저장하고, 타이머를 무효화하고, 응용 프로그램이 나중에 종료 될 경우 응용 프로그램을 현재 상태로 복원 할 수있는 충분한 응용 프로그램 상태 정보를 저장하십시오.

애플리케이션이 백그라운드 실행을 지원하는 경우 사용자가 종료 할 때는 applicationWillTerminate 메소드가 대신 호출됩니다.

applicationDidEnterBackground 는 이름에서 알 수 있듯이 백그라운드로 들어가진 다음에 호출됩니다.

applicationWillResignActive 에 이어서 동작되는 메소드라고 할 수 있습니다.

applicationWillEnterForeground

네번째 메소드 applicationWillEnterForeground 입니다.

이번에도 맥락을 확인하기 위해 주석을 번역해봤습니다.

1
백그라운드에서 활성 상태로 전환의 일부로 호출됩니다.

이름을 해석해보면 앱이 Foreground(화면) 에 나오기 시작할 때 실행되는 메소드입니다.

applicationDidBecomeActive

5번째 메소드는 applicationDidBecomeActive 입니다.

이름에서 알 수 있듯이 백그라운드로 갔던 앱이 다시 정면에 나타난 이후 실행되는 메소드입니다.

applicationWillEnterForeground 에 이어서 실행되는 메소드라고 할 수 있겠습니다.

applicationWillTerminate

마지막 메소드 applicationWillTerminate 입니다.

어플리케이션이 종료될 때 실행되는 메소드입니다.

다만 애플에서는 applicationWillTerminate 메소드의 실행을 보장하지는 않습니다.

어플이 종료되는 경우 applicationWillTerminate 메소드가 꼭 실행되지는 않았습니다.

그래서 어플이 종료될 때 꼭 실행해야 할 작업이 있다면 앱이 백그라운드로 가는 메소드인 applicationDidEnterBackground 에서 수행해야 합니다.

정리

AppDelegate 에 있는 메소드들에 대해서 간단하게 살펴봤습니다.

잘못된 정보가 있거나 피드백하고 싶으시다면 댓글 부탁드립니다.

읽어주셔서 감사합니다.