은근한

AppDelegate.swift 본문

카테고리 없음

AppDelegate.swift

EsJoo 2018. 5. 19. 20:11

원본 - iOS Developer 공식 사이트


AppDelegate.swift 소스 파일은 두 가지 주요한 기능이 있다.


AppDelegate Class를 정의 한다, app delegate는 앱의 상태변화에 따라 응답하고 컨텐츠가 그려지는 화면(window)을 만듦.


entry point, 앱의 입력 이벤트를 받아 전달하는 run loop를 만듦.



import UIKit

import CoreData


@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {


    var window: UIWindow?


UIApplicationMain 속성을 사용하는 것 즉, @UIApplicationMain을 클래스 상단에 두는 것은 UIApplicationMain 함수를 호출하고 


AppDelegate class의 이름을 delegate class의 이름으로 전달 하는 것과 동일 함.


이에 대한 응답으로 시스템은 application object를 생성.


application object는 App의 Life cycle을 관리하고 있으며, 시스템은 AppDelegate Class의 인스턴스를 만들고 application object에 할당.



AppDelegate class는 UIApplicationDelegate Protocol을 채택.


UIApplicationDelegate Protocol은 앱의 상태변화에 따라 응답을 설정할 수 있도록 사용할 수 있는 메소드들을 정의, 다른 app-level events를 처리하는 메소드를 정의.


AppDelegate class는 단일 프로퍼티인 window를 포함.

  1. var window: UIWindow?

window 프로퍼티는 앱의 화면(window)에 대한 참조를 저장.


window는 앱 계층들 중에 root view를 표시, 이는 앱의 모든 컨텐츠가 그려지는 곳


window 프로퍼티는 optional 즉, (nil) 어떠한 값도 가지지 않은 상태가 될 수도 있음.


AppDelegate class는 구현할 메소드들을 제공함. 아래와 같이


  1. func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
  2. func applicationWillResignActive(_ application: UIApplication)
  3. func applicationDidEnterBackground(_ application: UIApplication)
  4. func applicationWillEnterForeground(_ application: UIApplication)
  5. func applicationDidBecomeActive(_ application: UIApplication)
  6. func applicationWillTerminate(_ application: UIApplication)

이 메소드들을 사용하면 application object가 app delegate와 통신할 수 있음.

앱의 상태가 전환되는 동안 (앱의 실행, 백그라운드 전환, 종료 ) application object는 상응하는 delegate method 호출 하여 App의 응답 기회를 준다.

각 각의 delegate method들은 기본 행동을 가짐. Method 내용을 비우거나 삭제를 하더라도 기본 행동 (default behavior)을 실행 하게 됨.

이런 기능들을 AppDelegate에서 제공을 합니다. 그냥 지나쳐갔지만 생각보다 큰 의미를 담고있었네요.


* 의역이 잘 못 되었을 수도 있어요