Jupyo's Daily Story
생명주기 (Lifecycle) 본문
728x90
반응형
생명주기(Lifecycle)는 객체 또는 소프트웨어 컴포넌트가 생성되고 사용되며 소멸되는 일련의 과정을 말합니다.
Swift에서 자주 다루는 생명주기는 앱, ViewController, View 등 여러 가지가 있습니다.
앱 생명주기
앱이 실행되는 동안 여러 상태로 이동하는 과정을 나타냅니다.
상태 | 설명 |
Not Running | 앱이 실행되지 않은 상태입니다. |
Inactive | 앱이 실행 중이나 이벤트를 수신하지 않는 상태입니다. 주로 전환 중에 발생합니다. |
Active | 앱이 포그라운드에 있으며 이벤트를 수신하는 활성 상태입니다. |
Background | 앱이 화면에 보이지 않지만, 코드가 실행될 수 있는 상태입니다. |
Suspended | 앱이 백그라운드에 있으나, 실행 중인 코드가 없는 상태입니다. 메모리가 부족할 때 우선적으로 종료 될 수 있습니다. |
메서드 | 설명 |
application(_:didFinishLaunchingWithOptions:) | 앱이 실행될 때 호출되며, 초기 설정을 위한 코드를 작성합니다. |
applicationDidBecomeActive(_:) | 앱이 활성화될 때 호출됩니다. |
applicationWillResignActive(_:) | 다른 이벤트가 발생해 앱이 비활성화될 때 호출됩니다. |
applicationDidEnterBackground(_:) | 앱이 백그라운드로 전환될 때 호출됩니다. |
applicationWillEnterForeground(_:) | 앱이 다시 포그라운드로 돌아올 때 호출됩니다. |
applicationWillTerminate(_:) | 앱이 종료될 때 호출됩니다. 데이터를 저장해야 할 경우 사용합니다. |
ViewController 생명주기
ViewController는 뷰가 로드되고 표시되는 과정을 거칩니다.
메서드 | 설명 |
init(coder:) / init(nibName:bundle:) | 뷰 컨트롤러의 인스턴스가 생성될 때 호출됩니다. 초기화 작업을 수행합니다. |
loadView() | 뷰 컨트롤러의 뷰가 메모리에 로드될 때 호출됩니다. 프로그래밍 방식으로 뷰를 생성할 때 사용합니다. |
viewDidLoad() | 뷰가 메모리에 로드된 후 한 번 호출됩니다. 초기 설정을 하는 데 적합합니다. |
viewWillAppear(_:) | 뷰가 화면에 나타나기 전에 호출됩니다. UI 업데이트나 데이터 준비에 사용합니다. |
viewDidAppear(_:) | 뷰가 화면에 나타난 후 호출됩니다. 애니메이션 등을 시작하는 데 적합합니다. |
viewWillLayoutSubviews() | 뷰가 서브뷰를 레이아웃하기 전에 호출됩니다. 레이아웃 변경을 준비하는 데 사용됩니다. |
viewDidLayoutSubviews() | 뷰가 서브뷰를 레이아웃한 후 호출됩니다. 레이아웃 작업 후 추가 작업을 수행하는 데 적합합니다. |
viewWillDisappear(_:) | 뷰가 사라지기 전에 호출됩니다. 사용자에게 떠나는 뷰를 보여주기 위한 작업을 수행할 수 있습니다. |
viewDidDisappear(_:) | 뷰가 사라진 후 호출됩니다. 추가적인 정리 작업 등을 수행할 수 있습니다. |
deinit | 뷰 컨트롤러가 메모리에서 해제될 때 호출됩니다. 자원을 정리하는 데 사용합니다. |
View 생명주기
UIView는 화면에 나타나고 사라지는 과정을 가집니다. 이 과정에서 init이나 deinit 메서드가 호출되어 뷰가 초기화되고 소멸됩니다.
뷰는 메모리에 로드되고, 추가적으로 설정한 작업이 실행되며, 필요에 따라 메모리에서 해제되어 사라집니다.
메서드 | 설명 |
init(frame:) / init(coder:) | 뷰가 초기화될 때 호출됩니다. |
awakeFromNib | 스토리보드 또는 xib에서 로드된 뷰가 초기화된 후 호출됩니다. |
layoutSubviews | 서브뷰의 레이아웃이 변경될 때 호출됩니다. 뷰의 크기나 위치를 조정합니다. |
draw(_:) | 뷰가 그려질 때 호출됩니다. 커스텀 그래픽을 그리기 위해 오버라이드할 수 있습니다. |
deinit | 뷰가 메모리에서 해제될 때 호출됩니다. 리소스를 정리할 때 사용합니다. |
반응형
'Swift' 카테고리의 다른 글
프로토콜 (Protocols) (0) | 2024.11.10 |
---|---|
static, class, final class 프로퍼티/메서드 (2) | 2024.10.26 |
콜렉션 타입(Collection Type) - 딕셔너리(Dictionary) (4) | 2024.10.08 |
콜렉션 타입(Collection Type) - 집합(Set) (4) | 2024.10.07 |
콜렉션 타입(Collection Type) - 배열(Array) (2) | 2024.10.07 |