ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift] - Deinitialization
    iOS/🟠 Swift 2021. 4. 20. 20:08

    πŸ€–πŸŸ’[우짱의 iOS λΈ”λ‘œκ·Έ]πŸ”΅πŸ’»

    iOSλ₯Ό κ³΅λΆ€ν•˜λ©΄μ„œ 배운 λ‚΄μš©μ„ κΈ°λ‘ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

    deinitializer λŠ” 클래슀 μΈμŠ€ν„΄μŠ€κ°€ λ©”λͺ¨λ¦¬μ—μ„œ ν•΄μ œλ˜κΈ° 직전에 ν˜ΈμΆœλ©λ‹ˆλ‹€.

    deinitializer λŠ” 클래슀 νƒ€μž…μ—μ„œλ§Œ μ‘΄μž¬ν•©λ‹ˆλ‹€.

     


     

    How Deinitialization Works

     

    μžμ›μ„ ν™•λ³΄ν•˜κΈ° μœ„ν•΄μ„œ μš°λ¦¬λŠ” 직접 μΈμŠ€ν„΄μŠ€λ₯Ό λ©”λͺ¨λ¦¬μ—μ„œ ν• λ‹Ήν•΄μ œ ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

     

    Swift κ°€ νŒλ‹¨ν•˜μ—¬ μžλ™μœΌλ‘œ ν• λ‹Ήν•΄μ œν•©λ‹ˆλ‹€. ARC λ₯Ό 톡해 μΈμŠ€ν„΄μŠ€μ˜ λ©”λͺ¨λ¦¬ 관리λ₯Ό ν•©λ‹ˆλ‹€.

     

    ν•˜μ§€λ§Œ ν• λ‹Ή ν•΄μ œμ‹œ ν•΄λ‹Ή μžμ›μ— 좔가적인 μž‘μ—…μ΄ ν•„μš”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    좔가적인 μž‘μ—…μ— λŒ€ν•œ 예λ₯Ό λ“€λ©΄, μ–΄λ–€ ν΄λž˜μŠ€κ°€ νŒŒμΌμ„ μ—΄κ³  μ“°κΈ° μž‘μ—…μ„ ν•œλ‹€λ©΄, ν• λ‹Ή ν•΄μ œν•˜κΈ° 직전에 νŒŒμΌμ„ λ‹«λŠ” μž‘μ—…μ΄ ν•„μš”ν•  κ²ƒμž…λ‹ˆλ‹€.

     

    μœ„μ™€ 같은 μž‘μ—…μ„ deinit λ©”μ„œλ“œ 바디에 μΆ”κ°€ν•΄μ„œ κ΅¬ν˜„ν•˜λ©΄ λ©λ‹ˆλ‹€.

     

    deinit 은 ν΄λž˜μŠ€λ‹Ή μ΅œλŒ€ ν•˜λ‚˜λ§Œ κ΅¬ν˜„μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€. (κ΅¬ν˜„μ΄ ν•„μˆ˜λŠ” μ•„λ‹ˆκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€)

     

    deinit은 νŒŒλΌλ―Έν„°λ₯Ό 받지 μ•Šκ³ , 보톡 λ©”μ„œλ“œμ— λΆ™μ΄λŠ” () (parenthesis) 도 뢙이지 μ•ŠμŠ΅λ‹ˆλ‹€.

    class SomeClass {
      ...
      
      deinit {
          // perform the deinitialization
      }
    }

     

    λ˜ν•œ deinit은 직접 ν˜ΈμΆœν•  수 μ—†μŠ΅λ‹ˆλ‹€. κ΅¬ν˜„λ§Œ ν•΄λ†“μœΌλ©΄ Swift κ°€ μ•Œμ•„μ„œ λ©”λͺ¨λ¦¬ ν• λ‹Ήν•΄μ œ 직전에 ν˜ΈμΆœν•©λ‹ˆλ‹€.

     

    상속 κ΄€κ³„μ—μ„œ deinit μ˜ 호좜 μˆœμ„œλŠ” subclass 의 deinit이 λ¨Όμ € ν˜ΈμΆœλ©λ‹ˆλ‹€. (initκ³Ό 같은 μˆœμ„œ)

     

    그리고 κ΅¬ν˜„λœ subclass의 deinit 이 없어도 superclass 의 deinit은 ν˜ΈμΆœλ©λ‹ˆλ‹€.

     

     

     

    끝!


    κ΄€λ ¨ 자료: docs.swift.org/swift-book/LanguageGuide/Deinitialization.html

    λŒ“κΈ€

μ–΄μ œλ³΄λ‹€ λ°œμ „ν•œ λ‚˜