πŸ‘©πŸ»‍πŸ’»/Swift

21. μΈμŠ€ν„΄μŠ€ 생성 / μ†Œλ©Έ (init / deinit) - iOS ν”„λ‘œκ·Έλž˜λ°μ„ μœ„ν•œ μŠ€μœ„ν”„νŠΈ 기초

reujusong 2020. 6. 22. 12:19

μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λŠ” μ΄λ‹ˆμ…œλΌμ΄μ €μ™€ 클래슀의 μΈμŠ€ν„΄μŠ€κ°€ μ†Œλ©Έλ  λ•Œ ν˜ΈμΆœλ˜λŠ” λ””μ΄λ‹ˆμ…œλΌμ΄μ €, 그리고 이와 κ΄€λ ¨λœ 것듀에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² λ‹€.

  • ν”„λ‘œνΌν‹° μ΄ˆκΈ°κ°’
  • μ΄λ‹ˆμ…œλΌμ΄μ € init
  • λ””μ΄λ‹ˆμ…œλΌμ΄μ € deinit

 

- ν”„λ‘œνΌν‹° μ΄ˆκΈ°κ°’

  • μŠ€μœ„ν”„νŠΈμ˜ λͺ¨λ“  μΈμŠ€ν„΄μŠ€λŠ” μ΄ˆκΈ°ν™”μ™€ λ™μ‹œμ— λͺ¨λ“  ν”„λ‘œνΌν‹°μ— μœ νš¨ν•œ 값이 ν• λ‹Ήλ˜μ–΄ μžˆμ–΄μ•Ό ν•œλ‹€.
  • ν”„λ‘œνΌν‹°μ— 미리 기본값을 할당해두면 μΈμŠ€ν„΄μŠ€κ°€ 생성됨과 λ™μ‹œμ— μ΄ˆκΈ°κ°’μ„ μ§€λ‹ˆκ²Œ λœλ‹€.

 

 1. μ΄λ‹ˆμ…œλΌμ΄μ €(initializer)

  • ν”„λ‘œνΌν‹° μ΄ˆκΈ°κ°’μ„ μ§€μ •ν•˜κΈ° μ–΄λ €μš΄ κ²½μš°μ—λŠ” μ΄λ‹ˆμ…œλΌμ΄μ € init을 톡해 μΈμŠ€ν„΄μŠ€κ°€ κ°€μ Έμ•Ό ν•  μ΄ˆκΈ°κ°’을 전달할 수 μžˆλ‹€.

 

 

ν”„λ‘œνΌν‹°μ˜ μ΄ˆκΈ°κ°’μ΄ κΌ­ ν•„μš” 없을 λ•Œ

  • μ˜΅μ…”λ„μ„ μ‚¬μš©!
  • class λ‚΄λΆ€μ˜ init을 μ‚¬μš©ν• λ•ŒλŠ” convenience ν‚€μ›Œλ“œ μ‚¬μš©

 

 

  • μ•”μ‹œμ  μΆ”μΆœ μ˜΅μ…”λ„μ€ μΈμŠ€ν„΄μŠ€ μ‚¬μš©μ— κΌ­ ν•„μš”ν•˜μ§€λ§Œ μ΄ˆκΈ°κ°’μ„ ν• λ‹Ήν•˜μ§€ μ•Šκ³ μž ν•  λ•Œ μ‚¬μš©



 

2. μ‹€νŒ¨κ°€λŠ₯ν•œ μ΄λ‹ˆμ…œλΌμ΄μ €

  • μ΄λ‹ˆμ…œλΌμ΄μ € λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬λ˜λŠ” μ΄ˆκΈ°κ°’μ΄ 잘λͺ»λœ 경우 μΈμŠ€ν„΄μŠ€ 생성에 μ‹€νŒ¨ν•  수 μžˆλ‹€.
  • μΈμŠ€ν„΄μŠ€ 생성에 μ‹€νŒ¨ν•˜λ©΄ nil을 λ°˜ν™˜ν•œλ‹€.
  • μ‹€νŒ¨κ°€λŠ₯ν•œ μ΄λ‹ˆμ…œλΌμ΄μ €μ˜ λ°˜ν™˜νƒ€μž…μ€ μ˜΅μ…”λ„ νƒ€μž…μ΄λ‹€.
  • init?을 μ‚¬μš©ν•œλ‹€.

 

- λ””μ΄λ‹ˆμ…œλΌμ΄μ €(deinitializer)

  • deinit은 클래슀의 μΈμŠ€ν„΄μŠ€κ°€ λ©”λͺ¨λ¦¬μ—μ„œ ν•΄μ œλ˜λŠ” μ‹œμ μ— ν˜ΈμΆœλœλ‹€.
  • μΈμŠ€ν„΄μŠ€κ°€ ν•΄μ œλ˜λŠ” μ‹œμ μ— ν•΄μ•Όν•  일을 κ΅¬ν˜„ν•  수 μžˆλ‹€.
  • deinit은 λ§€κ°œλ³€μˆ˜λ₯Ό 지닐 수 μ—†λ‹€.
  • μžλ™μœΌλ‘œ ν˜ΈμΆœλ˜λ―€λ‘œ 직접 ν˜ΈμΆœν•  수 μ—†λ‹€.
  • λ””μ΄λ‹ˆμ…œλΌμ΄μ €λŠ” ν΄λž˜μŠ€ νƒ€μž…μ—λ§Œ κ΅¬ν˜„ν•  수 μžˆλ‹€.
  • μΈμŠ€ν„΄μŠ€κ°€ λ©”λͺ¨λ¦¬μ—μ„œ ν•΄μ œλ˜λŠ” μ‹œμ μ€ ARC(Automatic Reference Counting) μ˜ κ·œμΉ™μ— 따라 κ²°μ •λœλ‹€.