iOS 앱의 Life Cycle

posted on 27 Jun 2017 under category iOS

앱은 작성한 코드와 시스템 프레임워크 간의 상호작용의 결과물이다.
iOS 프레임워크는 MV와 Delegation 디자인 패턴에 의존하고 있다.

대체텍스트

iOS는 Unix 기반이다. 그리고 Objective - C 는 C 언어에서 파생된 언어이다.
그리고 C언어는 main함수에서 프로그램이 시작된다.
그러므로 Unix 의 main 의 형태인 int main(int argc, char *argv[]) 에서 앱이 시작된다.

  • UIApplicationMain 함수
    • 생명주기를 담당하게 되는 AppDelegate 를 메모리상에 올려놓음.
    • 앱에 중요한 객체를 생성(AppDelegate, UIApplication 등등)
    • 스토리보드에서 UI를 로딩
    • 앱의 초기 셋팅값(info.plist)를 로딩
    • 앱을 Run loop 에 올려놓음.

대체텍스트

  • UIApplication 객체
    • Event loop 를 관리
    • Delegate에 앱 상태변화나 푸쉬같은 이벤트를 알려줌.
  • App Delegate 객체
    • UIApplication객체와 함께 앱 초기화, 앱 상태변화, 많은 high-level 이벤트 등을 관리
    • 앱 당 하나만 존재
  • Data Model 객체
    • 앱의 콘텐츠를 저장하는데 사용됨.(디비 저장)
    • 앱의 Data Model 객체의 데이터의 일부를 관리하기 위해 document 객체를 사용
  • ViewController 객체
    • 앱의 내용을 화면에 나타내는 기능을 함.
    • 하나의 View 와 이 View의 subview들을 관리함.
    • 화면에 View가 표시될때 window에 설치하여 보여지게 해줌
  • UIWindow 객체
    • 화면에 나타나는 View를 관리.
    • 대부분의 앱은 MainScreen 에 해당하는 한개의 Window 를 가짐.

AppDelegate 의 메소드들

대부분의 상태변화는 Appdelegate객체의 메소드 호출을 거쳐갑니다. 아래의 메소드는 AppDelegate 에서 사용되는 메소드이고, 앱의 상태변화에 따라 처리를 할수 있게 도와준다.

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    • 어플리케이션이 처음 실행되어 메모리상에 올라가게 될때 호출됨.
  • (void)applicationDidBecomeActive:(UIApplication *)application {
    • 앱이 Foreground 로 올라올때(Back -> Foreground 올때) 호출됨
    • 최초 실행시에도 호출됨
  • (void)applicationWillResignActive:(UIApplication *)application {
    • 앱이 Foreground 에서 다른 상태로 전환 될때 (Foreground -> Back) 호출됨
  • (void)applicationDidEnterBackground:(UIApplication *)application {
    • 앱이 Background 로 들어갔을때 호출됨
  • (void)applicationWillEnterForeground:(UIApplication *)application {
    • 앱이 Foreground 로 올라올때 호출됨
  • (void)applicationWillTerminate:(UIApplication *)application {
    • 앱이 완전 종료되기 전에호출됨

대체텍스트

  1. 결론은
  2. 앱을 클릭한다
  3. 어플리케이션의 main 실행
  4. main 에서 UIApplicationMain() 실행
  5. AppDelegate 의 applicationDidFinishLaunching: 호출
  6. applicationDidFinishLaunching 실행 후 EventLoop 으로 들어감
  7. 이벤트 처리함.
  8. 앱 종료 하기
  9. AppDelegate 의 applicationWillTerminate: 호출
  10. 앱 종료됨.

검색 : life cycle life-cycle lifeCycle 라이프 사이클

Written by Brody Byun
Please Do not steal content from our website.
Please let me know if you want to take the post.(email or reply)