티스토리 뷰

Swift + iOS/iOS

[ios] AppDelegate.swift

군옥수수수 2017. 12. 1. 11:00

Xcode로 iOS 프로젝트를 생성하면 기본적으로 만들어지는 몇 가지 파일이 존재합니다.그 중 AppDelegate.swift 파일 안의 내용을 살펴보면 뭔가 좀 중요한 것처럼 보이는데요. 오늘은 AppDelegate.swift 가 어떤 역할을 하는지 알아보도록 하겠습니다.


AppDelegate.swift안에는 AppDelegate 클래스가 존재하며 이 클래스는 여러분이 만드는 어플리케이션의 중추적인 역할을 합니다. AppDelegate.swift 의 기능에는 크게 두 가지가 있습니다.


  • 여러분의 어플리케이션이 그려질 윈도우를 생성하고, 어플리케이션 내의 상태 변화에 반응할 수 있게끔 합니다. 이러한 상태 변화에는 어플리케이션의 실행, 백그라운도로 전환 종료 등이 있습니다. 이와 관련된 메소드는 다음과 같습니다.

    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions
                     [UIApplicationLaunchOptionsKey: Any]?) -> Bool
    func applicationWillResignActive(_ application: UIApplication)
    func applicationDidEnterBackground(_ application: UIApplication)
    func applicationWillEnterForeground(_ application: UIApplication)
    func applicationDidBecomeActive(_ application: UIApplication)
    func applicationWillTerminate(_ application: UIApplication)
    
  • 또한 어플리케이션의 entry point를 생성하고 loop를 돌면서 어플리케이션에게 input event들을 전달합니다. 이러한 행위는 파일의 맨 위에 명시된 UIApplicationMain이라는 속성에 의해 행해집니다. 이렇게 UIApplicationMain 속성하는 것은 UIApplicationMain 함수를 호출하고 AppDelegate 클래스의 이름을 delegate 클래스의 이름으로써 넘기는 것과 동일한 행위입니다.

    이렇게 넘어가게 되면 시스템은 application object 를 생성하고 이 객체는 어플리케이션의 전체적인 life cycle을 관리하는 역할을 합니다. 그리고 시스템은 AppDelegate 클래스를 객체화하여 application object 에 할당하고 어플리케이션을 실행시킵니다.

기본적으로 AppDelegate 클래스는 UIApplicationDelegate 프로토콜을 준수하며 이 프로토콜이 제공하는 메소드를 구현함으로써 어플리케이션의 상태 변화나 app-level의 이벤트들을 처리하게 됩니다.


그리고 AppDelegate 클래스는 window라는 어플리케이션의 윈도우에 대한 참조 변수를 갖고 있습니다. 이 윈도우는 어플리케이션 뷰 계층의 루트가 되며 어플리케이션의 컨텐츠들은 그 위에 그려집니다.


마무리

이렇게 간단하게 AppDelegate.swift의 역할에 대해 알아보았습니다. 저도 모든 내용이 와닿는 것은 아니지만 어플리케이션의 실행에 있어서 중추적인 역할을 하고 보다 밑의 계층과의 밀접한 관계를 갖는 다는 것을 느낄수 있었습니다. 그만큼 이 파일에서 코드를 작성할 때는 더욱 신중해야할 것 같습니다. 감사합니다.


참고자료


  1. AppDelegate.swift의 역할

  2. Apple Documents

  3. What is the AppDelegate for and how do I know when to use it?


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함