[iOS] LifeCycle

growingยท2022๋…„ 12์›” 29์ผ

iOS

๋ชฉ๋ก ๋ณด๊ธฐ
4/15
post-thumbnail

๐Ÿ“š MVC Pattern



Model

  • ์•ฑ์˜ ๋ฐ์ดํ„ฐ ํ˜น์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ํ•ด๋‹น

ํ”„๋กœํผํ‹ฐ ์˜ต์ €๋ฒ„

  • ํ”„๋กœํผํ‹ฐ : ํด๋ž˜์Šค ์•ˆ์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜
  • ๋‚ด๋ถ€์˜ Notification, KVO(Key Value Observation, ๋ชจ๋ธ์˜ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€). ๊ฐ์ง€ ํ›„ ์ด ๋ชจ๋ธ์„ ๊ตฌ๋…ํ•˜๊ณ  ์žˆ๋Š” ์ปจํŠธ๋กค๋Ÿฌ์—๊ฒŒ ๋ฐฉ์†ก์‹์œผ๋กœ ์ „๋‹ฌ. ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ฐฉ์†ก์„ ๋ฐ›๊ณ  '๋ชจ๋ธ์ด ๋ณ€ํ™” ํ–ˆ์œผ๋‹ˆ ๋ทฐํ•œํ…Œ๋„ ์—…๋ฐ์ดํŠธํ•˜๋ผ๊ณ  ์•Œ๋ ค์ค˜์•ผ๊ฒ ๋‹ค'๋ผ๊ณ  ์ œ์–ด

View

  • ์‚ฌ์šฉ์ž์—๊ฒŒ UI ์ œ๊ณต (์•ฑ์˜ ํ™”๋ฉด ํ•˜๋‚˜ํ•˜๋‚˜)

Controller

  • ๋ชจ๋ธ๊ณผ ๋ทฐ์˜ ์ค‘๊ฐ„ ๊ด€๋ฆฌ์ž
    ex) ์‚ฌ์šฉ์ž๊ฐ€ ๋ทฐ์— ์•ก์…˜(ํ„ฐ์น˜ ๋“ฑ)์„ ๊ฐ€ํ•˜๋ฉด ๋ฐ›์•„์„œ ๋ชจ๋ธ์˜ ๋ฐ์ดํ„ฐ ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒ ์‹œ ๋ชจ๋ธ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ๋ณ€ํ™” ๋ฐœ์ƒ์„ ๊ฐ์ง€ํ•˜์—ฌ '๋ทฐ์—๊ฒŒ ๋ฐ์ดํ„ฐ ๋ณ€ํ™”๊ฐ€ ๊ฐ์ง€๋˜์—ˆ์œผ๋‹ˆ ์ด ๋ณ€ํ™”๋œ ๋‚ด์šฉ์„ ๋ทฐ์— ๋„์›Œ์ฃผ๋ผ(์—…๋ฐ์ดํŠธํ•ด์ค˜๋ผ)' ๋ผ๊ณ  ์•Œ๋ ค์คŒ

controller๊ฐ€ ๋ทฐ์˜ ์•ก์…˜์„ ๋ฐ›์•„์˜ค๋Š” ๋ฒ•

  • ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ทฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์•ก์…˜์— ๋Œ€ํ•ด์„œ ํƒ€๊ฒŸ์„ ๋งŒ๋“ค์–ด๋‘ฌ์„œ(= ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์•ก์…˜์„ ๋ฐ›์„ ํ˜น์€ ์•ก์…˜์„ ์‹คํ–‰ํ•  ๋ทฐ๋ฅผ ์„ ์–ธ) ๊ฐ์ง€
  • ํƒ€๊ฒŸ์„ ์ •ํ•˜๋Š” ๋ฒ•

    IBOutlet, IBAction์€ StoryBoard์™€์˜ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ
    @IBOutlet : ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ
    @IBAction : Event ๋ฐœ์ƒ ์‹œ (์ž…๋ ฅ์ด ๋“ค์–ด์™”์„ ๋•Œ) ์–ด๋–ค ํ–‰๋™์„ ํ•  ์ง€



๐Ÿ“š ViewController ์ƒ๋ช…์ฃผ๊ธฐ

ViewController๊ฐ€ ํ™”๋ฉด์— ๋„์›Œ์งˆ๋•Œ ๋ฉ”์†Œ๋“œ๋“ค์ด ํ˜ธ์ถœ๋˜๋Š” ์ฃผ๊ธฐ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ

-init( ) : ์Šคํ† ๋ฆฌ๋ณด๋“œ๋‚˜ nib(xib)ํŒŒ์ผ์„ ํ†ตํ•ด ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ดˆ๊ธฐํ™”. ๋ทฐ๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•  ์ •๋ณด๋ฅผ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์— ์ €์žฅ

-loadView( ) : ๋ทฐ๋ฅผ ์‹ค์ œ๋กœ ์ƒ์„ฑํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ

1. viewDidLoad( )

๋ทฐ ๊ณ„์ธต์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•œ ์งํ›„์— ํ˜ธ์ถœ๋จ

2. viewWillAppear( ) : ๋ทฐ๊ฐ€ ๊ณง ๋ณด์—ฌ์งˆ ๊ฒƒ

๋ทฐ๊ฐ€ ๊ณ„์ธต์— ์ถ”๊ฐ€๋˜๊ณ , ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋จ
ํ™”๋ฉด์ด ์ƒˆ๋กœ ์˜ฌ๋ผ์˜ฌ ๋•Œ๋งˆ๋‹ค ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋•Œ๋งˆ๋‹ค ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ž‘์—…์„ ๋‹ด๋‹นํ•˜๊ธฐ์— ์œ ์šฉ

3. viewDidAppear( ) : ๋ทฐ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ๋‹ค

๋ทฐ๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œ๋œ ์ดํ›„์— ํ˜ธ์ถœ๋จ
๋ทฐ๋ฅผ ๋ณด์—ฌ์ค„ ๋•Œ ํ•„์š”ํ•œ ์ถ”๊ฐ€์ ์ธ ์ž‘์—… ๋‹ด๋‹น

4. viewWillDisappear( ) : ๋ทฐ๊ฐ€ ์‚ฌ๋ผ์งˆ ๊ฒƒ

๋ทฐ๊ฐ€ ๊ณ„์ธต์—์„œ ์‚ฌ๋ผ์ง€๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋จ
๋ทฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ ๋‚˜์„œ ํ–ˆ๋˜ ํ–‰๋™๋“ค์„ ๋˜๋Œ๋ฆฌ๋Š” ์ž‘์—…์„ ํ•˜๊ฑฐ๋‚˜ ์ž‘์„ฑ ๋˜๋Š” ์„ ํƒ๋œ ์ •๋ณด๋“ค์„ ์‚ญ์ œ๋˜๊ธฐ ์ „์— ์ €์žฅํ•ด๋‘๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰

5. viewDidDisappear( ) : ๋ทฐ๊ฐ€ ์‚ฌ๋ผ์ง

๋ทฐ๊ฐ€ ๊ณ„์ธต์—์„œ ์‚ฌ๋ผ์ง„ ๋’ค ํ˜ธ์ถœ๋จ
๋ทฐ๋ฅผ ์ˆจ๊ธฐ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰


+) viewDidUnload์—์„œ ์ˆ˜ํ–‰ํ•˜๋˜ ์ž‘์—…์€ didReceiveMemoryWarning()์—์„œ ๋Œ€์‹  ์ˆ˜ํ–‰

์ฐธ๊ณ  ์ž๋ฃŒ)
https://etst.tistory.com/90
https://jcsoohwancho.github.io/2019-09-21-iOS-%EB%B7%B0%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC%EC%9D%98-%EC%83%9D%EB%AA%85%EC%A3%BC%EA%B8%B0/


์ฐธ๊ณ ) View์™€ SwiftCode ViewController์—ฐ๋™


๋˜๋Š”



์ฐธ๊ณ ) SecondView์™€ SwiftCode SecondViewController ์—ฐ๋™

+) ์—๋Ÿฌ ์ˆ˜์ •! ์ด๋•Œ Identity Storyboard ID๋„ ์„ค์ •ํ•ด์ค˜์•ผํ•จ



์‹ค์Šต) FirstViewController์—์„œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ SecondViewController๋กœ ๋„˜๊ธฐ๊ธฐ

FirstViewController์—์„œ SecondViewController ํ˜ธ์ถœ

// secondViewController ํ˜ธ์ถœ
        let secondViewController =  self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
        self.present(secondViewController, animated: true, completion: nil)

FirstViewController ์ฝ”๋“œ

@IBOutlet weak var uiTextField: UITextField!
    
    @IBAction func didTapAction(_ sender: Any) {
        
        // uiTextField์— ์ ํžŒ ํ…์ŠคํŠธ๋ฅผ ์ƒ์ˆ˜ data์— ๋„ฃ๊ณ  ์ถœ๋ ฅ
        // ์–ด๋–ป๊ฒŒ ๋˜๋“  nil๊ฐ’์„ ๋ฐ›์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์œผ๋ฉด !๋กœ ๋ฐ”๋กœ ์˜ต์…”๋„ ํ’€์–ด์ฃผ๊ธฐ
        let data : String = uiTextField.text!
                 
        // secondViewController ํ˜ธ์ถœ
        let secondViewController =  self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
        
        secondViewController.result = data
        
        self.present(secondViewController, animated: true, completion: nil)
    }



SecondViewController code

 @IBOutlet weak var uiResult: UILabel!
    
    var result : String? = "DEFAULT"

๐Ÿ“š App ์ƒ๋ช…์ฃผ๊ธฐ

์•ฑ ์ „๋ฐ˜์ ์œผ๋กœ ์ œ์Šค์ฒ˜๋ฅผ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋‹ค๋ฃธ
- ex) home ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ์•ฑ ์ž์ฒด๊ฐ€ background๋กœ ๊ฐ”์„ ๋•Œ, ๋‹ค์‹œ foreground๋กœ ๊ฐ”์„ ๋•Œ

  • iOS 13๋ถ€ํ„ฐ SceneDelegate์—์„œ ๋‹ค๋ฃธ (์˜ˆ์ „์—๋Š” AppDelegate์—์„œ ๊ฐ™์ด ๋‹ค๋ค˜์Œ)

app๊ณผ scene

Scene์€ ์•ฑ UI์˜ ํ•˜๋‚˜์˜ ๋ณต์‚ฌ๋ณธ ๋˜๋Š” ์•ฑ UI์˜ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค

์œ„ ์‚ฌ์ง„์—์„œ๋Š” ์•ฑ ํ•˜๋‚˜์— ๋Œ€ํ•ด scene์ด 2๊ฐœ๊ฐ€ ์žˆ์Œ


  • AppDelegate : App ์ƒ๋ช…์ฃผ๊ธฐ ๊ทธ ์ž์ฒด(์•ฑ์ด ์ค€๋น„๋œ๋‹ค, ์•ฑ์ด ์ข…๋ฃŒ๋œ๋‹ค)๋ฅผ ๋‹ค๋ฃธ
  • App ์ƒ๋ช…์ฃผ๊ธฐ ๋‚ด๋ถ€์—์„œ Scene์˜ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋Œ๋ฉฐ ์ด ๋‚ด์šฉ์€ SceneDelegate์—์„œ ํ™•์ธ๊ฐ€๋Šฅ
  • ์ด ๋‘˜์˜ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ๊ฐ€ SceneSession์„ ํ†ตํ•ด ์ง„ํ–‰๋จ





์•ฑ ์ƒํƒœ

์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ
๋นจ๊ฐ• : AppDelegate
๊ฒ€์ • : SceneDelegate

1. Not Running

์•ฑ์ด ์‹คํ–‰๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜, ์™„์ „ํžˆ ์ข…๋ฃŒ๋˜์–ด ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ

2. Foreground

์•ฑ์ด ์ „๋ฉด์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์ƒํƒœ

  • Inactive
    - ์•ฑ์ด ์‹คํ–‰๋˜๋ฉด์„œ foreground์—์„œ ์‹คํ–‰์ค‘์ด์ง€๋งŒ ๋ฏธ๋ฆฌ์•Œ๋ฆผ ๋˜๋Š” ์ผ์ • ์–ผ๋Ÿฟ์ด ํ™”๋ฉด์— ๋ฎ์—ฌ์„œ ์•ฑ์ด ์‹ค์งˆ์ ์œผ๋กœ๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ
    - ์•ฑ์˜ ์ƒํƒœ ์ „ํ™˜ ๊ณผ์ •์—์„œ ์ž ๊น ๋จธ๋ฌด๋Š” ๋‹จ๊ณ„

  • active
    - ์•ฑ์ด foreground์—์„œ ์‹คํ–‰์ค‘์ด๋ฉฐ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ
    - ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹ค์งˆ์ ์œผ๋กœ ํ™œ๋™ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ

3. Background

์•ฑ์ด background์— ์žˆ์œผ๋ฉฐ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ์ƒํƒœ์ด๋ฉฐ, ๋‹ค๋ฅธ ์•ฑ์œผ๋กœ ์ „ํ™˜๋˜์—ˆ๊ฑฐ๋‚˜ ํ™ˆ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ”์„ ๋•Œ์˜ ์ƒํƒœ

  • Suspended ์ƒํƒœ๊ฐ€ ๋˜๊ธฐ ์ „ ์ž ๊น ๋จธ๋ฌด๋Š” ์ƒํƒœ(์ถ”๊ฐ€ ์ฝ”๋“œ ์‹คํ–‰์ด ํ•„์š”ํ•˜๋ฉด ๋จธ๋ฌด๋Š” ์‹œ๊ฐ„ ์—ฐ์žฅ)

  • ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰์ค‘์ด์ง€๋งŒ ์‚ฌ์šฉ์ž์˜ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์„ ์ˆ˜๋Š” ์—†์Œ ์ถ”๊ฐ€์ ์ธ ์ฝ”๋“œ (ex. ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ)๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ๋จธ๋ฌด๋ฆ„

  • ํ™ˆ๋ฒ„ํŠผ์„ ๋‘๋ฒˆ ๋ˆŒ๋Ÿฌ ์•ฑ์„ ๋‹ค์‹œ ์—ด์—ˆ์„ ๋•Œ, ์ฒ˜์Œ๋ถ€ํ„ฐ ์žฌ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด background ์ƒํƒœ์— ์žˆ๋‹ค๊ฐ€ ์˜ฌ๋ผ์˜จ ๊ฒƒ

  • ex) background์—์„œ ์Œ์•…์„ ์žฌ์ƒ

4. Suspended

์•ฑ์ด background์— ์žˆ์œผ๋ฉฐ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ์—†๋Š” ์ƒํƒœ

  • background์—์„œ ํŠน๋ณ„ํ•œ ์ž‘์—…์ด ์—†์„ ๊ฒฝ์šฐ Suspended ์ƒํƒœ๋กœ ์ „ํ™˜๋จ
  • ์•ฑ์€ ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ์˜ฌ๋ผ๊ฐ€์žˆ์ง€๋งŒ ์•„๋ฌด ์ผ๋„ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐํ„ฐ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
  • OS์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ด ์ƒํƒœ์˜ ์•ฑ์€ ์•Œ๋ฆผ ์—†์ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์—†์–ด์งˆ ์ˆ˜ ์žˆ์Œ





AppDelegate ๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ

1. Not Running ์ƒํƒœ์ผ ๋•Œ

  • application(_:willFinishLaunchingWithOptions:)

์•ฑ์„ ์‹คํ–‰ํ•  ๋•Œ ์ตœ์ดˆ๋กœ ์‹คํ–‰ํ•  ์ฝ”๋“œ
ํ•„์š”ํ•œ ์ฃผ์š” ๊ฐ์ฒด๋“ค์„ ์ƒ์„ฑํ•˜๊ณ  ์•ฑ ์‹คํ–‰ ์ค€๋น„๊ฐ€ ๋๋‚˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋จ

  • application(_:didFinishLaunchingWithOptions:)
    ์‹คํ–‰ ์งํ›„ ํ™”๋ฉด์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๊ธฐ ์ง์ „์— ํ˜ธ์ถœ(์•ฑ์ด ์ตœ์ดˆ๋กœ ์‹คํ–‰๋  ๋•Œ ํ˜ธ์ถœ)
    ์•ฑ ์‹คํ–‰์„ ์œ„ํ•œ ๋ชจ๋“  ์ค€๋น„๊ฐ€ ๋๋‚œ ํ›„ ํ™”๋ฉด์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋จ
    - ์ดˆ๊ธฐํ™” ์ฝ”๋“œ ์ž‘์„ฑ
    - Not Running -> Foreground ๋กœ ์ƒํƒœ ๋ณ€ํ™˜
  • applicationWillTerminate(_:)
    ์•ฑ์ด ์ข…๋ฃŒ ์ง์ „์— ํ˜ธ์ถœ (๋‹จ, suspend ์ƒํƒœ์—์„œ๋Š” ํ˜ธ์ถœ๋˜์ง€ ์•Š์Œ)
    - ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
    1) ๋ฉ”๋ชจ๋ฆฌ ํ™•๋ณด๋ฅผ ์œ„ํ•ด Suspended ์ƒํƒœ์— ์žˆ๋Š” app์„ ์ข…๋ฃŒ์‹œํ‚ฌ ๋•Œ
    2) ์‚ฌ์šฉ์ž๊ฐ€ multitasking UI๋ฅผ ํ†ตํ•ด ์ข…๋ฃŒํ•  ๋•Œ
    3) ์˜ค๋ฅ˜๋กœ ์ธํ•ด app์ด ์ข…๋ฃŒ๋  ๋•Œ
    4) ๋””๋ฐ”์ด์Šค ์žฌ๋ถ€ํŒ… ์‹œ

2. Inactive ์ƒํƒœ์ผ ๋•Œ

  • applicationWillEnterForeground
    Background -> Foreground๋กœ ์ „์ด๋  ๋•Œ ์‹คํ–‰
    ์•ฑ์ด Background์—์„œ Foreground๋กœ ๋Œ์•„์˜ค๊ธฐ ์ง์ „, ํ™”๋ฉด์— ๋ณด์—ฌ์ง€๊ธฐ ์ง์ „ ํ˜ธ์ถœ๋จ
    ํ˜ธ์ถœ๋œ ๋’ค Inactive ์ƒํƒœ๋ฅผ ๊ฑฐ์ณ Active ์ƒํƒœ๋กœ ์ง„์ž…
  • applicationWillResignActive
    Active -> InActive ์ƒํƒœ๋กœ ์ „์ด๋  ๋•Œ ์‹คํ–‰
    App์ด Inactive ์ƒํƒœ๋กœ ์ „ํ™˜๋˜๊ธฐ ์ง์ „ ํ˜ธ์ถœ


  • sceneWillEnterForeground(_:)
    ์•ฑ์ด background๋‚˜ not running์—์„œ foreground๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ์ง์ „์— ํ˜ธ์ถœ


  • sceneWillResignActive(_:)
    App Switcher ๋ชจ๋“œ(ํ™ˆ ๋ฐ” ์“ธ์–ด ์˜ฌ๋ ธ์„ ๊ฒฝ์šฐ ๋˜๋Š” ํ™ˆ ๋ฒ„ํŠผ ๋ชจ๋ธ ํ™ˆ ๋ฒ„ํŠธ ๋‘๋ฒˆ ๋ˆŒ๋ €์„ ๊ฒฝ์šฐ)
    App์ด Inactive ์ƒํƒœ๋กœ ์ „ํ™˜๋˜๊ธฐ ์ง์ „ ํ˜ธ์ถœ


3. Active ์ƒํƒœ์ผ ๋•Œ

  • applicationDidBecomeActive
    App์ด Active ์ƒํƒœ๋กœ ์ „ํ™˜๋˜์–ด ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚œ ํ›„ ์งํ›„ ํ˜ธ์ถœ
    Inactive ์ƒํƒœ๋กœ ๋„˜์–ด๊ฐ€ ์ค‘์ง€๋œ ์ž‘์—…์„ ์—ฌ๊ธฐ์„œ ๋ฐ˜๋“œ์‹œ ์žฌ์‹คํ–‰์‹œ์ผœ์ค˜์•ผ ํ•จ ex) ํ™”๋ฉด ๊ฐฑ์‹  ๋“ฑ
  • sceneDidBecomeActive(_:)
    ์•ฑ์ด InActive -> Active ์ง„์ž…ํ•˜๊ณ  ๋‚œ ์งํ›„ ํ˜ธ์ถœ
    ์•ฑ์ด ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ์ „์— ๋งˆ์ง€๋ง‰์œผ๋กœ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ

4. Background ์ƒํƒœ์ผ ๋•Œ

  • applicationDidEnterBackground
    ์•ฑ์ด background ์ƒํƒœ์ผ ๋•Œ ์‹คํ–‰
    App์ด Background ์ƒํƒœ๋กœ ์ „ํ™˜๋œ ์งํ›„ ํ˜ธ์ถœ
  • sceneDidEnterBackground(_:)
    ์•ฑ์ด background ์ƒํƒœ๋กœ ๋“ค์–ด๊ฐ”์„ ๋•Œ ํ˜ธ์ถœ
    suspended ์ƒํƒœ๊ฐ€ ๋˜๊ธฐ ์ „ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋“ฑ ์ข…๋ฃŒํ•˜๊ธฐ ์ „ ํ•„์š”ํ•œ ์ž‘์—…์„ ํ•จ

5. suspended ์ƒํƒœ์ผ ๋•Œ

๋”ฐ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ๋Š” ์—†์œผ๋ฉฐ background ์ƒํƒœ์—์„œ ํŠน๋ณ„ํ•œ ์ž‘์—…์ด ์—†์„ ๋•Œ ์ด ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ)
sihyungyou.github.io

[coding-sojin2.tistory.com](https://coding-sojin2.tistory.com/196#:~:text=%EC%95%B1%EC%9D%98%20%EC%83%9D%EB%AA%85%EC%A3%BC%EA%B8%B0%20(App's,%EC%9D%98%20%EA%B3%BC%EC%A0%95%EC%9D%84%20%EB%9C%BB%ED%95%A9%EB%8B%88%EB%8B%A4.)

zzoo789.tistory.com

profile
Hello, World!

0๊ฐœ์˜ ๋Œ“๊ธ€