๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS/iOS

[iOS ๋ฉด์ ‘์งˆ๋ฌธ] ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ƒ๋ช…์ฃผ๊ธฐ (ViewController Life Cycle)

by Fomagran ๐Ÿ’ป 2021. 3. 22.
728x90
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค!

 

์ €๋ฒˆ ์‹œ๊ฐ„์— ์•ฑ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃฌ ์ ์ด ์žˆ๋Š”๋ฐ์š”. (ํ˜น์‹œ ์•ˆ๋ณด์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ์—์„œ ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค!)

 

์˜ค๋Š˜์€ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~


ViewController Life Cycle

 

๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด 6๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ ๋ฌด์—‡์„ ๋œปํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ์ „์— ํ•œ๋ฒˆ ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋˜๋Š”์ง€ ๋ด๋ณผ๊นŒ์š”?

 


ViewController

 

๋จผ์ € ์ฒซ๋ฒˆ์งธ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๊ฐ ๋ฉ”์†Œ๋“œ๋งˆ๋‹ค ์ถœ๋ ฅ์„ ํ•˜๊ฒŒ๋” ๋งŒ๋“ค์–ด๋†“๊ฒ ์Šต๋‹ˆ๋‹ค.

import UIKit

class ViewController: UIViewController {
    
    override func loadView() {
        super.loadView()
        print("๋ทฐ ๋กœ๋“œ์ค‘~")
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        print("๋ทฐ ๋กœ๋“œ ๋˜์—ˆ์–ด์š”~")
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(true)
        print("๋ทฐ ์ด์ œ ๊ณง ๋ณด์ผ๊ฑฐ์—์š”~")
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(true)
        print("๋ทฐ ๋‚˜ํƒ€๋‚ฌ์–ด์š”~")
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(true)
        print("๋ทฐ ์ด์ œ ๊ณง ์‚ฌ๋ผ์งˆ๊ฑฐ์—์š”~")
    }
    
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(true)
        print("๋ทฐ ์‚ฌ๋ผ์กŒ์–ด์š”~")
    }

}

NewViewController

 

๋‹ค์Œ์œผ๋กœ ์ด๋™๋  ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋„ ๋˜‘๊ฐ™์ด ํ•ด๋†“์„๊ฒŒ์š”!

import UIKit

class NewViewController: UIViewController {

    override func loadView() {
        super.loadView()
        print("์ƒˆ๋กœ์šด ๋ทฐ ๋กœ๋“œ์ค‘~")
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        print("์ƒˆ๋กœ์šด ๋ทฐ ๋กœ๋“œ ๋˜์—ˆ์–ด์š”~")
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(true)
        print("์ƒˆ๋กœ์šด ๋ทฐ ์ด์ œ ๊ณง ๋ณด์ผ๊ฑฐ์—์š”~")
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(true)
        print("์ƒˆ๋กœ์šด ๋ทฐ ๋‚˜ํƒ€๋‚ฌ์–ด์š”~")
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(true)
        print("์ƒˆ๋กœ์šด ๋ทฐ ์ด์ œ ๊ณง ์‚ฌ๋ผ์งˆ๊ฑฐ์—์š”~")
    }
    
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(true)
        print("์ƒˆ๋กœ์šด ๋ทฐ ์‚ฌ๋ผ์กŒ์–ด์š”~")
    }

}

Storyboard

 

์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์ฒซ๋ฒˆ์งธ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ๋„ค๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ž„๋ฒ ๋“œํ•˜๊ณ  ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋‰ด๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ํ‘ธ์‰ฌํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋ณด๋‹ˆ ์ œ ์˜ˆ์ƒ๊ณผ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ ๋‚˜์™”์–ด์š”.

 

์ €๋Š” ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋ทฐ๊ฐ€ ๋‹ค ์‚ฌ๋ผ์ง„ ๋‹ค์Œ ์ƒˆ๋กœ์šด ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋‚˜์˜ฌ๊ฑฐ๋ผ๊ณ  ์˜ˆ์ƒํ–ˆ์ง€๋งŒ

 

์•„๋ž˜์™€ ๊ฐ™์ด ์ƒˆ๋กœ์šด ๋ทฐ๊ฐ€ ๋กœ๋“œ๋˜๊ณ  ๋กœ๋“œ ๋œ๋’ค ๋ทฐ๊ฐ€ ์ด์ œ viewWillDisappear์ด ์‹คํ–‰๋˜๊ณ 

 

์ƒˆ๋กœ์šด๋ทฐ๊ฐ€ ์ด์ œ ๋ณด์ด๋ ค๊ณ  ํ• ๋•Œ viewDidDisappear์ด ์‹คํ–‰๋˜๋„ค์š”!

 

 

๊ทธ๋Ÿฌ๋ฉด ์ด์ œ๋ถ€ํ„ฐ ํ•˜๋‚˜ํ•˜๋‚˜ ๊ตฌ์ฒด์ ์œผ๋กœ ์•Œ์•„๋ณผ๊นŒ์š”?


LoadView

 

 

  • ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ทฐ๋ฅผ ๋งŒ๋“ ๋‹ค.
  • ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์— ์—ฐ๊ฒฐ๋œ nib ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ๋ฉ”์„œ๋“œ๋Š” Nib ํŒŒ์ผ์—์„œ ๋ทฐ๋ฅผ ๋กœ๋“œํ•œ๋‹ค.
  • ์ด ๋ฉ”์„œ๋“œ๋Š” ์ง์ ‘์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๋ฉด ์•ˆ๋œ๋‹ค.

ViewDidLoad

 

์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ํ”ํ•˜๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ์ฃ .

 

 

  • ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ทฐ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•œ ํ›„์— ํ˜ธ์ถœ๋œ๋‹ค.
  • ๋ทฐ๊ฐ€ nib์—์„œ ๋กœ๋“œ๋๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ์ƒ์„ฑ๋๋“  ์ƒ๊ด€์—†์ด ํ˜ธ์ถœ๋œ๋‹ค.

ViewWillAppear

 

 

  • ๋ทฐ๊ฐ€ ๋ทฐ ๊ณ„์ธต ๊ตฌ์กฐ์— ์ถ”๊ฐ€๋˜๊ธฐ ์ „๊ณผ ๋ทฐ๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๊ตฌ์„ฑ๋˜๊ธฐ ์ „์— ํ˜ธ์ถœ๋œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ƒํƒœ๋ฐ”๋‚˜ ํ™”๋ฉด๋ฐฉํ–ฅ์„ ์ •ํ• ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 


ViewDidAppear

 

 

  • ๋ทฐ๊ฐ€ ๋ทฐ ๊ณ„์ธต๊ตฌ์กฐ์— ์ถ”๊ฐ€๋˜์—ˆ์Œ์„ ์•Œ๋ฆฐ๋‹ค.

ViewWillDisappear

 

  • ๋ทฐ๊ฐ€ ๋ทฐ ๊ณ„์ธต๊ตฌ์กฐ์—์„œ ์‚ฌ๋ผ์งˆ ๊ฒƒ์ž„์„ ์•Œ๋ฆฐ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ƒํƒœ๋ฐ”๋‚˜ ๋ฐฉํ–ฅ์„ ๋˜๋Œ๋ฆด๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ViewDidDisappear

 

  • ๋ทฐ๊ฐ€ ๋ทฐ ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Œ์„ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์—๊ฒŒ ์•Œ๋ฆฐ๋‹ค.
  • ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜์—ฌ ๋‹ซ๊ธฐ ๋˜๋Š” ์ˆจ๊ธฐ๊ธฐ์™€ ๊ฐ™์€ ์ถ”๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ 6๋‹จ๊ณ„์˜ ๋ทฐ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•ด์„œ ๊ตฌ์ฒด์ ์œผ๋กœ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ์š”.

 

 

 

์™œ ์ด ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ๋œ ๊ฑธ๊นŒ์š”?๐Ÿค”

 

 

์ œ ์ƒ๊ฐ์€ ์‚ฌ๋ผ์งˆ ๋ทฐ๋ณด๋‹ค ์ƒˆ๋กญ๊ฒŒ ์ƒ๊ธธ ๋ทฐ๋ฅผ ์ค€๋น„ํ•˜๋Š” ๊ฒƒ์„ ๋” ์ค‘์š”์‹œ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„์š”.

 

์›๋ž˜ ๋ทฐ๊ฐ€ ๋‹ค์Œ ๋ทฐ๋กœ ์ด๋™ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋จผ์ € ์ƒˆ๋กœ์šด ๋ทฐ๋ฅผ ๋กœ๋“œํ•˜๊ณ  ๋กœ๋“œ๊ฐ€ ๋๋‚ฌ๋‹ค๋ฉด ๋ทฐ๊ฐ€ ์ด์ œ ์‚ฌ๋ผ์งˆ๊ฑฐ๋ผ๊ณ  ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด์ฃ .

 

๊ทธ๋ฆฌ๊ณค ๋ทฐ๊ฐ€ ์ด์ œ ์‚ฌ๋ผ์งˆ๊ฑฐ๋ผ๊ณ  ํ™•์‹คํžˆ ์•Œ๋ฆผ์ด ์™”๋‹ค๋ฉด ๋ทฐ๊ฐ€ ๋ณด์ผ ์ค€๋น„๋ฅผ ํ•˜๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด์ฃ .

 

๊ทธ๋Ÿฌ๋ฉด ๋ทฐ๋Š” ์ด์ œ ๋ณด์ผ ์ค€๋น„๋ฅผ ํ•˜๊ณ  ์ค€๋น„๊ฐ€ ๋๋‹ค๋ฉด ์ด์ „ ๋ทฐ๊ฐ€ ์‚ฌ๋ผ์ง„ ๋’ค ์ƒˆ๋กœ์šด ๋ทฐ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์ด์ฃ !


์œ„์—์„œ ๊ฐ ๋ฉ”์„œ๋“œ๋ฅผ ์„ค๋ช…ํ•  ๋•Œ 

 

ํ•ต์‹ฌ์€ ๋ทฐ ๊ณ„์ธต๊ตฌ์กฐ์— ์ถ”๊ฐ€๋˜๋Š”์ง€ ์ œ๊ฑฐ๋˜๋Š”์ง€์ธ๊ฑฐ ๊ฐ™์•„์š”.

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋ทฐ ๊ณ„์ธต๊ตฌ์กฐ์— ์–ด๋–ป๊ฒŒ ์ถ”๊ฐ€๋˜๊ณ  ์ œ๊ฑฐ๋˜๋Š” ๊ฒƒ์ผ๊นŒ์š”?๐Ÿง

 

View Hierachy

 

๋ทฐ ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ์˜์–ด๋กœ ๋ทฐ ํžˆ๋ผ์น˜๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์˜ ์•„๋ž˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํžˆ๋ผ์น˜ ๋ชจ๋“œ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ์š”.

 

 

 

์•„๋ž˜์™€ ๊ฐ™์ด ๋ทฐ๋Š” ์ถ”๊ฐ€๋˜๊ณ  ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

 

 

๊ณ ๋กœ ๋ทฐ ๊ณ„์ธต๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒˆ๋กญ๊ฒŒ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•  ๋•Œ ์Œ“์ด๊ณ  ์ œ๊ฑฐ๋˜๋Š”๋ฐ

 

๊ทธ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด ๋ทฐ ์ƒ๋ช…์ฃผ๊ธฐ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€