ViewController Lifecycle 정리

임혜정·2024년 7월 9일
0

ViewController.swift

class ViewController: UIViewController {

	private lazy var button: UIButton = {
        let button = UIButton()
        button.setTitle("다음 페이지로 이동", for: .normal)
        button.backgroundColor = .red
        button.setTitleColor(.white, for: .normal)
        button.addTarget(self, action: #selector(buttonTapped), for: .touchDown)
        return button
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        print("viewDidLoad")
        configureUI()
    }
    
    override func viewWillAppear(_ animated: Bool) {
        print("viewWillAppear")
    }
    
    override func viewIsAppearing(_ animated: Bool) {
        print("viewIsAppearing")
    }
    
    override func viewDidAppear(_ animated: Bool) {
        print("viewDidAppear")
    }

    override func viewWillDisappear(_ animated: Bool) {
        print("viewWillDisappear")
    }
    
    override func viewDidDisappear(_ animated: Bool) {
        print("viewDidAppear")
    }
    
    private func configureUI() {
        [button].forEach { view.addSubview($0) }
        view.backgroundColor = .white
        button.snp.makeConstraints {
            $0.center.equalToSuperview()
            $0.width.equalTo(250)
            $0.height.equalTo(120)
        }
    }
    
    @objc private func buttonTapped() {
        self.navigationController?.pushViewController(ViewController2(), animated: true)
    }
}

ViewController2.swift


class hjViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .white
        print("ViewController2로 이동됨")
    }
    
}
  1. init(): ViewController가 메모리에 로드됨
  2. loadView(): ViewController의 view를 생성한다. 커스텀 view를 만들 때 이 메서드를 재정의한다.
  3. viewDidLoad(): view가 메모리에 로드된 직후 호출되며 초기 설정이나 한번만 실행되야하는 코드를 여기에 작성한다.
  4. viewWillAppear(_:): view가 화면에 나타나기 직전에 호출된다. 화면이 나타날 때마다 실행되야 하는 코드를 여기에 작성한다.
  5. viewDidAppear(_:): view가 화면에 완전히 나타난 후 호출된다. 애니메이션 시작이나 데이터 로딩같은 작업을 여기에 작성한다.
  6. viewWillDisappear(_:): view가 화면에서 완전히 사라지기 직전에 호출된다. 데이터 저장이나 리소스 해제 등의 작업을 여기에 작성한다.
  7. viewDidDisappear(_:): view가 화면에서 사라진 후에 호출된다. 추가적인 정리 작업을 여기에 작성한다.
  8. deinit(): viewController가 메모리에서 해제될 때 호출된다. 필요한 정리 작업을 여기에 작성한다.

위와 같은 순서로 viewController가 life cycle을 가지며 각 단계에서 적절한 작업을 수행하게 하므로서 앱의 효율을 높일 수 있다.

profile
오늘 배운걸 까먹었을 미래의 나에게..⭐️

0개의 댓글