Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

Jupyo's Daily Story

생명주기 (Lifecycle) 본문

Swift

생명주기 (Lifecycle)

JangJupyo 2024. 10. 14. 23:30
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 뷰가 메모리에서 해제될 때 호출됩니다. 리소스를 정리할 때 사용합니다.
반응형