@IBOutlet weak var ImageView: UIImageView!
@IBOutlet weak var Label: UILabel!
@IBOutlet weak var Button: UIButton!
이 줄들은 ImageView
, Label
, Button
이라는 세 가지 프로퍼티를 선언한다.
이 프로퍼티들은 스토리보드의 UI 구성 요소에 연결되고
@IBOutlet
키워드는 이러한 프로퍼티들이 스토리보드의 UI 요소들과 연결될 수 있게 해준다.
weak
키워드는 뷰 컨트롤러가 이러한 객체들을 소유하지 않음을 나타내고 참조 사이클과 메모리 누수를 방지하는 데 도움을 줄 수 있다.
각 프로퍼티는 특정 UIKit 클래스 타입
이다.
viewDidLoad의 의미와 역할
viewDidLoad
는 뷰 컨트롤러의 뷰가 메모리에 로드된 후 에 호출되는 메서드이다.
이 메서드는 뷰가 사용자에게 보이기 전에 한 번만 호출이 되며 즉, 뷰 컨트롤러가 처음으로 생성되고 나서 뷰가 준비 될 때 호출이 된다.
override func viewDidLoad() {
super.viewDidLoad()
//일반적인 사용의 예시다
setupUI()
fetchData()
super.viewDidLoad()
를 호출하여 상위 클래스의 기본 동작을 수행한다. 이건 필수적인 호출이고 이를 통해 뷰 컨트롤러의 Lifecycle
관리가 올바르게 이루어진다고 보면 된다.
결론을 내리자면 viewDidLoad
는 뷰가 준비될 때 한 번 호출되어 초기 설정을 수행하고 뷰 컨트롤러가 제대로 동작할 수 있도록 준비를 하는 역할이다.
라이프사이클 관리란 iOS 애플리케이션에서 뷰 컨트롤러가 생성되고 표시되고 사라지는 전 과정을 체계적으로 관리하는 것을 의미한다.
init 또는 initWithCoder:
viewDidLoad:
뷰 컨트롤러의 뷰가 메모리에 로드된 후에 호출된다. 이 시점에서 뷰는 아직 화면에 표시되지 않았지만, 뷰의 기본적인 설정을 하기에 적합하다 예를 들어, 초기 데이터를 로드하거나, UI 구성 요소를 설정할 수 있다.
viewWillAppear(_:):
뷰가 화면에 나타나기 직전에 호출된다. 뷰가 화면에 보이기 직전에 수행해야 할 작업이 있을 때 사용하면 된다. 예를 들어, 뷰가 다시 나타날 때 데이터를 갱신하거나 애니메이션을 준비할 수가 있을 것이다.
viewDidAppear(_:):
뷰가 화면에 완전히 나타난 후에 호출된다. 뷰가 화면에 보인 후에 시작해야 하는 작업 (예: 애니메이션 시작, 데이터 로드 완료 표시 등)을 처리할 수 있다.
viewWillDisappear(_:):
뷰가 화면에서 사라지기 직전에 호출된다. 뷰가 사라지기 전에 해야 할 작업(예: 입력 중인 데이터를 저장하거나, 애니메이션을 중지 등)을 처리할 수 있다.
viewDidDisappear(_:):
뷰가 화면에서 완전히 사라진 후에 호출된다. 뷰가 화면에서 사라진 이후에 처리해야 할 작업을 수행할 수 있다.
deinit:
뷰 컨트롤러가 메모리에서 해제될 때 호출된다. 뷰 컨트롤러가 더 이상 필요하지 않을 때 호출되며, 메모리 누수를 방지하기 위해 사용하던 리소스를 해제하는 데 사용한다.
라이프 사이클을 적절하게 관리함으로써 메모리 누수를 방지할 수 있고 불필요한 메모리 사용을 줄일 수 있다.
예를 들어 화면에서 사라지는 뷰에 대한 데이터 로딩을 중지하거나, 타이머를 해제할 수 있을 것이다.
라이프사이클 메서드를 활용하여 적절한 시점에 데이터를 로드하고 UI를 업데이트 함으로써 일관된 사용자 경험을 제공할 수 있다.
예를 들어 뷰가 다시 나타날 때마다 데이터를 갱신하여 최신 상태를 유지할 수 있는 것이라고 할까
그리고 필요하지 않은 시점에 불필요한 작업을 하지 않도록 성능을 최적화 할 수 있다.
예를 들어 뷰가 보이지 않을 때 애니메이션을 중지하거나 네트워크 요청을 일시적으로 중단할 수 있을 것이다.