🍎/Swift

[Swift] ꡬ쑰체와 클래슀의 차이

yenios 2021. 6. 16. 17:56

 

 

 

 

 

(λ³Έ λΉ„κ΅λŠ” Swift5λ₯Ό κΈ°μ€€μœΌλ‘œ μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€.)

 

 

ꡬ쑰체와 ν΄λž˜μŠ€λŠ” 데이터λ₯Ό μš©λ„μ— 맞게 λ¬Άμ–΄μ„œ ν‘œν˜„ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€. ꡬ쑰체와 ν΄λž˜μŠ€λŠ” ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬μ‘°ν™”λœ 데이터와 κΈ°λŠ₯을 κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. 즉, ꡬ쑰체와 클래슀 λͺ¨λ‘ μƒˆλ‘œμš΄ μ‚¬μš©μž μ •μ˜ 데이터 νƒ€μž…μ„ λ§Œλ“€μ–΄ μ£ΌλŠ” κ²ƒμž…λ‹ˆλ‹€.

 

 

 

λ‘˜μ˜ κ°€μž₯ 큰 차이점은, ꡬ쑰체의 μΈμŠ€ν„΄μŠ€λŠ” κ°’ νƒ€μž… 즉, λ³΅μ‚¬ν•œ 것을 μ£Όκ³ λ°›κ³  클래슀의 μΈμŠ€ν„΄μŠ€λŠ” μ°Έμ‘°(μ£Όμ†Œ)νƒ€μž…μ„ μ£Όκ³ λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.

'무엇을 μ£Όκ³ λ°›λŠ”μ§€'κ°€, 즉 μ£Όκ³ λ°›λŠ” λŒ€μƒμ΄ κ°€μž₯ 큰 차이점인 것이죠. μ—¬κΈ°μ„œ μ£Όλͺ©ν•΄μ•Όν•  점은 Swift μ–Έμ–΄ λ‚΄μ—μ„œ μ°Έμ‘° νƒ€μž…μ€ 클래슀의 μΈμŠ€ν„΄μŠ€κ°€ μœ μΌν•©λ‹ˆλ‹€. ꡬ쑰체λ₯Ό λΉ„λ‘―ν•΄μ„œ λ‹€λ₯Έ ν…Œμ΄ν„° νƒ€μž…μ€ λͺ¨λ‘ κ°’ νƒ€μž…μž…λ‹ˆλ‹€.

 

 

 

[곡톡점] μ‚¬μš© λͺ©μ  : μƒˆλ‘œμš΄ 데이터 νƒ€μž…μ„ μ •μ˜ν•˜κ³  κΈ°λŠ₯의 μΆ”κ°€

  • 값을 μ €μž₯ν•˜κΈ° μœ„ν•΄ ν”„λ‘œνΌν‹°λ₯Ό μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • κΈ°λŠ₯ 싀행을 μœ„ν•΄ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ„œλΈŒμŠ€ν¬λ¦½νŠΈ 문법을 톡해 ꡬ쑰체 λ˜λŠ” ν΄λž˜μŠ€κ°€ κ°–λŠ” κ°’(ν”„λ‘œνΌν‹°)에 μ ‘κ·Όν•˜λ„λ‘ μ„œλΈŒμŠ€ν¬λ¦½νŠΈλ₯Ό μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ΄ˆκΈ°ν™”λ  λ•Œμ˜ μƒνƒœλ₯Ό μ§€μ •ν•˜κΈ° μœ„ν•΄ μ΄λ‹ˆμ…œλΌμ΄μ €λ₯Ό μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ΄ˆκΈ°κ΅¬ν˜„κ³Ό λ”λΆˆμ–΄ μƒˆλ‘œμš΄ κΈ°λŠ₯ μΆ”κ°€λ₯Ό μœ„ν•΄ μ΅μŠ€ν…μ…˜(Extensioin)을 톡해 ν™•μž₯이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • νŠΉμ • κΈ°λŠ₯을 μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ νŠΉμ • ν”„λ‘œν† μ½œμ„ μ€€μˆ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

[차이점] μ£Όκ³ λ°›λŠ” λŒ€μƒμ˜ νƒ€μž… : ꡬ쑰체 -  Value, 클래슀 - Reference

  • κ΅¬μ‘°μ²΄λŠ” 상속할 수 μ—†μŠ΅λ‹ˆλ‹€.
  • νƒ€μž… μΊμŠ€νŒ…μ€ 클래슀의 μΈμŠ€ν„΄μŠ€μ—λ§Œ ν—ˆμš©λ©λ‹ˆλ‹€.
  • λ””μ΄λ‹ˆμ…œλΌμ΄μ €λŠ” 클래슀의 μΈμŠ€ν„΄μŠ€μ—λ§Œ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ°Έμ‘° 횟수 계산(Reference Counting)은 클래슀의 μΈμŠ€ν„΄μŠ€μ—λ§Œ μ μš©λ©λ‹ˆλ‹€.

 

 

 

 

 

μ°Έκ³  πŸ‘€

- μŠ€μœ„ν”„νŠΈ ν”„λ‘œκ·Έλž˜λ°(3판): 객체지ν–₯, ν•¨μˆ˜ν˜•, ν”„λ‘œν† μ½œ μ§€ν–₯ νŒ¨λŸ¬λ‹€μž„κΉŒμ§€ ν•œ λ²ˆμ—!(Swift 5)

 

Swift - ꡬ쑰체 클래슀 - yagom's blog

yagom's blog Swift - ꡬ쑰체 클래슀

blog.yagom.net