iOS App Dev

iphone view 로드시 실행되는 메소드 순서

또하나의세상2 2011. 12. 1. 17:32

[출처] iphone view 로드시 실행되는 메소드 순서 |작성자 디제이지유djziu

(http://blog.naver.com/soundeshop/70103009961)


-(void) awakeFromNib{}

XIB화일이 객체가 생성된후 바로 불리게 되는뷰. 만약 XIB로 뷰를 생성하지 않았으면 불리우지 않음

-(void)loadView{}
이  XIB로 view 를 생성하지 않고 view을 로드할때 사용된다 

-(void)viewDidLoad{} 
self.view 가 생성된 이후에 불리우게 되는뷰 

만약 위와 같이 뷰를 불러오는 메소드를  3개 다 쓸 경우에 순서는  아래와 같이 불리우게 된다
-(void) awakeFromNib{} = -(void)loadView{} (awakeFromNib 과 loadView 같은 경우는 같이 쓸 일은 거의 없지만 거의 동시에 불리운다고 생각하면된다 그리고 그후에   -(void)viewDidLoad{} 가 불리운다


-(void)viewWillAppear:(BOOL)animated{}
viewWillAppear는 viewDidload가 불린 이후에 불리게 되는데 
viewDidLoad같은 경우에는  메모리 warning이 발생하여 view 가 없어지지 않는한 viewDidLoad 다시 불리지 않지만
viewWillAppear 같은 경우에는  b라는 화면에 갔다가 다시 a라는 화면에 돌아오면 다시 이 메소드가 호출된다

-(void) viewDidAppear:(BOOL)animated{}
viewDidAppear같은 경우에는 viewWillAppear가 불리운 이후에 화면이 다 로딩 된 이후에  불리우게 된다
---------------------------------------------------

기화 코드를 넣을 수 있는 메소드에 대한 특징을 정리하면 다음과 같다.


* Init

 - 일반적인  NSObject 의 초기화 코드이다.


* InitWithCoder

 - 인터페이스 빌더 문서 안에 있는 객체들은 모두 InitWithCoder 로 초기화된다.

 - 그렇기 때문에 InitWithFrame 등의 초기화 메소드는 호출되지 않는다.


* InitWithNibName

 - 뷰 컨트롤러를 외부 NIB 파일에서 만드는 경우에 호출한다.

 - 뷰 컨트롤러 자신을 제외한 XIB 파일에 포함된 모든 객체는 InitWithCoder 로 초기화된다.


* awakeFromNib

 - 인터페이스 빌더에서 생성된 모든 객체는 초기화가 끝나면 awakeFromNib 메소드를 호출한다.

 - 하지만 코드를 작성해서 직접 객체를 생성한 경우에는 당연히 이 메소드가 호출되지 않는다.


* viewDidLoad

 - 뷰 컨트롤러의 뷰가 로그된 후에 호출된다.

 - 탭 바에 포함된 뷰 컨트롤러라면 자신의 탭이 선택되어 화면에 뷰가 나타날 때가 되어서야 이 메소드가 호출된다.