Published on

๐Ÿ“ฑ iOS - View Controller์˜ Life Cycle

Authors
  • avatar
    Name
    ์ด์ฐฝ์ค€
    Twitter

์˜ค๋Š˜์€ ๋ฉด์ ‘์„ ๋ณผ ์ผ์ด ํ•˜๋‚˜ ์žˆ์—ˆ๋Š”๋ฐ์š”.. ๋Œ€๋‹ต์„ ์ œ๋Œ€๋กœ ๋ชปํ•ด์„œ ๋๋‚˜์ž๋งˆ์ž ํ™ฉ๊ธ‰ํ•˜๊ฒŒ ๊ณต๋ถ€ํ•˜๋ ค๊ณ  ์ž‘์„ฑํ•ด๋‘” ๋ชฉ๋ก๋“ค์„ ์—ด์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ „๋ถ€ ๋‹ค ์žˆ๋”๋ผ๊ณ ์š”.. ใ…Žใ…Ž;; ๊ณต๋ถ€๋ฅผ ์ข€ ๋” ์—ด์‹ฌํžˆ ํ–ˆ์œผ๋ฉด ๋‹ต ํ•  ์ˆ˜ ์žˆ์—ˆ์„ํ…๋ฐ ์•„์‰ฝ๋„ค์š”..

๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ๊ทธ ์ค‘์— ํ•˜๋‚˜์˜€๋˜ View Controller์˜ Life Cycle์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

View Controller์˜ Life Cycle

View Controller๋„ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฐ์ฒด๋“ค์ฒ˜๋Ÿผ init๊ณผ deinit ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Life Cycle์— ํ•ด๋‹น๋˜๋Š” ๋‚ด์šฉ ์ค‘ ์–ด๋–ค ๊ฒƒ์€ ์ €ํฌ์—๊ฒŒ ์•„์ฃผ์•„์ฃผ ์ต์ˆ™ํ•œ ๋ชจ์Šต์ด์ฃ .

View Controller ํŒŒ์ผ์„ ์ฒ˜์Œ ๋งŒ๋“ค๋ฉด ๋ณดํ†ต ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ์ž…๋ ฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ์ต์ˆ™ํ•œ ์นœ๊ตฌ์ฃ ?

import UIKit

class HomeViewController: UIViewController {
  override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
  }
}

๋ง ๊ทธ๋Œ€๋กœ View๊ฐ€ Load ๋  ๋•Œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ์ธ๋ฐ์š”, View Controller์˜ Life Cycle์—๋Š” ์ด viewDidLoad์™ธ์—๋„ ๋งŽ์€ ํ•จ์ˆ˜๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

View Controller's Life Cycle

์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋ฉ”์†Œ๋“œ๋“ค์˜ ์ด๋ฆ„๋“ค์ด ์ง๊ด€์ ์œผ๋กœ ๋ช…๋ช…๋˜์–ด ์žˆ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋„ค์š”. ๊ทธ๋Ÿผ ํ•˜๋‚˜ํ•˜๋‚˜ ์‚ดํŽด๋ด…์‹œ๋‹ค. ๋ณ„ ๊ฑฐ ์—†๋‹ต๋‹ˆ๋‹ค!

viewDidLoad

๊ฐ€์žฅ ์ต์ˆ™ํ•œ ์นœ๊ตฌ๋ถ€ํ„ฐ ์•Œ์•„๋ด…์‹œ๋‹ค. ์• ํ”Œ์˜ ์„ค๋ช…์— ๋”ฐ๋ฅด๋ฉด viewDidLoad๋Š”

Controller์˜ View๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋œ ํ›„์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. View๋ฅผ ํ‘œํ˜„ํ•˜๋ ค๋ฉด ์šฐ์„  ๋กœ๋“œํ•ด์•ผํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ์— ๋ฆฌ์†Œ์Šค๋ฅผ ์˜ฌ๋ ค์ฃผ์–ด์•ผ ํ•˜๊ฒ ์ฃ . ํ•ด๋‹น ๊ณผ์ •์ด ๋ชจ๋‘ ๋๋‚œ ํ›„์— ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฐ”๋กœ viewDidLoad์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋ณดํ†ต viewDidLoad์—์„œ๋Š” ํ™”๋ฉด์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋“ค์„ ๋กœ๋“œํ•˜๊ฑฐ๋‚˜ View๊ฐ€ ๋กœ๋“œ๋œ ํ›„ ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์ด ๊ณณ์—์„œ ํ˜ธ์ถœํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

viewWillAppear

View๊ฐ€ ๋กœ๋“œ๋œ ํ›„์—๋Š” ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ๊นŒ์š”?

๋ฐ”๋กœ viewWillAppear๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. View๊ฐ€ ํ™”๋ฉด์— ๋„์›Œ์ง€๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ์ธ๋ฐ์š”, viewDidLoad์™€ ํ˜ธ์ถœ ์‹œ์ ์ด ๊ต‰์žฅํžˆ ์œ ์‚ฌํ•ด๋ณด์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ Appear์™€ Load๋ผ๋Š” ๋ช…ํ™•ํ•˜๊ฒŒ ๋‹ค๋ฅธ ์‹œ์ ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๋งŒํผ ์•„์ฃผ ํฐ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. viewDidLoad๋Š” View๊ฐ€ ๋กœ๋“œ๋œ ํ›„ ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ํ˜ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์—ฌ๋Ÿฌ View๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์„œ๋กœ๋ฅผ ์˜ค๊ฐˆ๋•Œ๋Š” ํ˜ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด viewWillAppear๋Š” ์—ฌ๋Ÿฌ View๋ฅผ ์˜ค๊ฐˆ ๋•Œ๋„ ์–ด์จ‹๋˜ ํ™”๋ฉด์— ๋„์›Œ์ง€๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ View๊ฐ€ ํ™”๋ฉด์— ๋œฐ ๋•Œ๋งˆ๋‹ค ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋ฉด viewWillAppear์— ๊ตฌํ˜„ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค!

viewDidAppear

viewDidAppear๋Š” ๋ง ๊ทธ๋Œ€๋กœ View๊ฐ€ ํ™”๋ฉด์— ๋„์›Œ์ง„ ์งํ›„์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. View๊ฐ€ ํ™”๋ฉด์— ๋„์›Œ์งˆ ๋•Œ๋งˆ๋‹ค ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•  ํ›„์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ ์—ฌ๊ธฐ์— ๊ตฌํ˜„ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

viewWillDisappear / viewDidDisappear

์‚ฌ์‹ค ์œ„์˜ viewWillAppear์™€ viewDidAppear ๋ฉ”์†Œ๋“œ๋ฅผ ์ดํ•ดํ•˜์…จ๋‹ค๋ฉด, ์ด ๋‘ ๋ฉ”์†Œ๋“œ๋Š” ๋ฝ€๋„ˆ์Šค์ž…๋‹ˆ๋‹ค. View๊ฐ€ ์‚ฌ๋ผ์งˆ ๋•Œ๋งˆ๋‹ค ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์ด์ฃ .

Reference

iOS ) View Controller์˜ ์ƒ๋ช…์ฃผ๊ธฐ(Life-Cycle) - ZeddiOS

Apple Developers - UIViewController