티스토리 뷰
발생일: 2016.07.08
키워드: View Controller Life Cycle, 뷰 컨트롤러 라이프싸이클
내용:
뷰 컨트롤러의 라이프싸이클
viewDidLoad
- 뷰가 준비된 상태로 뷰컨트롤러에서 사용할 객체들을 초기화할 때 적합한
- 뷰의 바운드가 아직 정의되지 않은 상태
- nib 에서 320으로 했다면, 컨스트레인트가 오토리사이징이 적용되지 않은 상태
- 메모리워닝이 실행되는 경우 중복 호출될 가능성이 있다
viewWillAppear
- 뷰가 스크린에 보이기 바로 전
- 뷰의 바운드는 정의됐지만, 오리엔테이션이 설정되진 않은 상태
- 테스트해보았는데 여전히 바운드도 넘어오지 않는다
- 필드를 숨기거나 보여주기에 적합한 시점
- 뷰가 스크린에 보여질 때마다 호출됨
viewWillLayoutSubviews
- 뷰의 바운드가 최종적으로 결정되는 최초 시점
- 컨스트레인트나 오토레이아웃을 사용하지 않았다면, 서브뷰의 레이아웃을 업데이트하기 적합한 시점
- 여러 번 중복으로 호출될 수 있다.
- 메인뷰의 서브뷰가 로드되는 경우 (테이블뷰나 컬렉션뷰가 로드된 경우? )
viewDidLayoutSubviews
- 서브뷰가 셋업되고 난 후 호출
- 서브뷰가 셋팅된 후 변경할 점이 있다면 여기서 수정하기 적합함
viewDidAppear
- 뷰가 스크린에 보여진 후에 호출
- 애니메이션을 시작하거나, 외부 API를 불러오기에 적합한 시점
viewWillDisappear
viewDidDisappear
viewDidUnload / viewDidDispose
- 클린업 하기 좋은 시점
- Notifications 등
• Creation:
- (void)init
- (void)initWithNibName:
• View creation:
- (BOOL)isViewLoaded
- (void)loadView
- (void)viewDidLoad
- (UIView *)initWithFrame:(CGRect)frame
- (UIView *)initWithCoder:(NSCoder *)coder
• Handling of view state changing:
- (void)viewDidLoad
- (void)viewWillAppear:(BOOL)animated
- (void)viewDidAppear:(BOOL)animated
- (void)viewWillDisappear:(BOOL)animated
- (void)viewDidDisappear:(BOOL)animated
- (void)viewDidUnload
• Memory warning handling:
- (void)didReceiveMemoryWarning
• Deallocation
- (void)viewDidUnload
- (void)dealloc
참고:
반응형
댓글
공지사항