본문 바로가기

개발도구/iOS - 아이폰 개발

[ios] 아이폰 생명주기 사이클

AppLifeCycle.zip


생명주기 사이클은 크게 두 종류로 나눠지는데요

application 과 view 생명주기로 나눠 집니다. 

1) 먼저 어플리케이션 생명주기 사이클은 이렇습니다.


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 => 어플리케이션이 처음 실행될 때. (처음 메모리상에 올라가게 될 때를 말함) 

- (void)applicationDidBecomeActive:(UIApplication *)application
 => 어플리케이션이 활성화 될 때, 
  즉 didFinishLaunchingWithOption 호출 직후, 어플리케이션이 백그라운드로 돌아갔다가 다시 불러질 때 호출

- (void)applicationWillResignActive:(UIApplication *)application
 => 어플리케이션이 백그라운드로 들어가기 직전(홈버튼을 누른 직후)에 호출 됨

- (void)applicationDidEnterBackground:(UIApplication *)application
 => 어플리케이션이 백그라운드로 완전히 들어갔을 때 호출됨

- (void)applicationWillEnterForeground:(UIApplication *)application
 => 어플리케이션이 다시 활성되 되기 직전에 호출됨
    (백그라운드 상에서 다시 어플리케이션이 활성되 되면 willEnterForeground 호출 후 applicationDidBecomeActive 호출)

- (void)applicationWillTerminate:(UIApplication *)application 
 => 어플리케이션이 완전히 종료되기 직전에 호출 됨


2) 두번째로 뷰 생명주기 사이클입니다.


뷰 노출과 관련해 시점의 차이를 이해하는 것은 중요한 것 같다.

viewDidLoad : view가 load 되었을 때 호출되는 메소드

viewWillAppear : view 노출 준비가 끝났을 때 호출되는 메소드

viewDidAppear : view 노출이 완료되었을 때 호출되는 메소드

- (void)loadView
뷰 컨트롤러에 보여지는 컨트롤러들을 생성하거나 추가할 때 적당한 부분 

- (void)viewWillAppear:(BOOL)animated
뷰 컨트롤러가 사용자에게 보여지기 직전에 호출(복수 호출 가능) 
loadView 다음에 호출 됨 

- (void)viewDidLoad
viewWillAppear 다음에 호출 됨 (단 한번만 호출됨) 

- (void)viewDidAppear:(BOOL)animated
viewDidLoad 다음에 호출 됨(복수 호출 가능)

- (void)viewWillDisappear:(BOOL)animated
해당 뷰컨트롤러가 사라지기 직전에 호출됨  

- (void)viewDidUnload
viewWillDisappear 이후에 호출됨

- (void)viewDidDisappear:(BOOL)animated
viewDidUnload 이후에 호출됨

3)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 => 어플리케이션이 처음 실행될 때. (처음 메모리상에 올라가게 될 때를 말함) 

- (void)applicationDidBecomeActive:(UIApplication *)application
 => 어플리케이션이 활성화 될 때, 
  즉 didFinishLaunchingWithOption 호출 직후, 어플리케이션이 백그라운드로 돌아갔다가 다시 불러질 때 호출

- (void)applicationWillResignActive:(UIApplication *)application
 => 어플리케이션이 백그라운드로 들어가기 직전(홈버튼을 누른 직후)에 호출 됨

- (void)applicationDidEnterBackground:(UIApplication *)application
 => 어플리케이션이 백그라운드로 완전히 들어갔을 때 호출됨

- (void)applicationWillEnterForeground:(UIApplication *)application
 => 어플리케이션이 다시 활성되 되기 직전에 호출됨
    (백그라운드 상에서 다시 어플리케이션이 활성되 되면 willEnterForeground 호출 후 applicationDidBecomeActive 호출)

- (void)applicationWillTerminate:(UIApplication *)application 
 => 어플리케이션이 완전히 종료되기 직전에 호출 됨


참고사이트입니다)

http://yooninsung.blog.me/30086543126

http://j2enty.tistory.com/76

http://theeye.pe.kr/entry/how-to-access-delegate-from-UIApplication