λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🍎 iOS/Swift

[Swift] Swift μ—μ„œ ꡬ쑰체와 클래슀의 차이

by Danna 2021. 5. 28.
728x90
728x90

ꡬ쑰체와 ν΄λž˜μŠ€λŠ” 데이터λ₯Ό μš©λ„μ— 맞게 λ¬Άμ–΄μ„œ ν‘œν˜„ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€. Swift μ—μ„œλŠ” ꡬ쑰체와 클래슀의 문법이 μœ μ‚¬ν•˜κ³ , property 와 method λ₯Ό 지닐 수 μžˆμŠ΅λ‹ˆλ‹€. λ‘˜μ˜ 큰 μ°¨μ΄λŠ” κ΅¬μ‘°μ²΄λŠ” Value type (값을 λ³΅μ‚¬ν•˜λŠ” ν˜•νƒœ), ν΄λž˜μŠ€λŠ” Reference type (객체λ₯Ό κ³΅μœ ν•˜λŠ” ν˜•νƒœ) μž…λ‹ˆλ‹€. λ˜ν•œ, ν΄λž˜μŠ€λŠ” 상속이 κ°€λŠ₯ν•˜μ§€λ§Œ κ΅¬μ‘°μ²΄λŠ” 상속이 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.

 

μ€‘μš”ν•œ 핡심은 Swift ν‘œμ€€ λΌμ΄λΈŒλŸ¬λ¦¬μ— μ •μ˜λœ νƒ€μž…μ˜ λŒ€λΆ€λΆ„μ€ κ΅¬μ‘°μ²΄λΌλŠ” μ μž…λ‹ˆλ‹€ !

 

πŸ‘€ Swift 의 ꡬ쑰체가 C 기반 μ–Έμ–΄μ˜ ꡬ쑰체와 λ‹€λ₯Έ 점은?

 

  • C 기반 μ–Έμ–΄μ˜ ꡬ쑰체와 기본적인 κΈ°λŠ₯은 λΉ„μŠ·ν•˜μ§€λ§Œ, 클래슀의 λͺ‡ 가지 κΈ°λŠ₯을 μΆ”κ°€ν•΄ 였히렀 ν΄λž˜μŠ€μ— κ°€κΉŒμš΄ κΈ°λŠ₯을 ν•œλ‹€.
  • μžλ™μœΌλ‘œ μƒμ„±λ˜λŠ” 멀버 μ΄ˆκΈ°ν™” ν•¨μˆ˜ 외에 μ»€μŠ€ν…€ μ΄ˆκΈ°ν™” ν•¨μˆ˜ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.
  • Swift κ΅¬μ‘°μ²΄λŠ” method λ₯Ό 지닐 수 있으며, protocol 을 κ΅¬ν˜„ν•  수 μžˆλ‹€.

 

πŸ‘€ Swift ν‘œμ€€ λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ 클래슀 λŒ€μ‹  ꡬ쑰체λ₯Ό μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΌκΉŒ?

 

  • ν΄λž˜μŠ€λ³΄λ‹€ ꡬ쑰체가 λ”μš± λ‹¨μˆœν•˜κΈ° λ•Œλ¬Έμ—, μž‘μ„±ν•œ μ½”λ“œλ₯Ό μ•ˆμ •ν™”μ‹œν‚€λ©° νŠΉμ • ꡬ쑰체λ₯Ό λ³€κ²½μ‹œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ‹€λ₯Έ 뢀뢄은 영ν–₯받지 μ•ŠκΈ° λ•Œλ¬Έμ΄λ‹€.
  • 상속, μ΄ˆκΈ°ν™” ν•΄μ œ 객체, μ°Έμ‘° 횟수 계산(Reference Counting) λ“± λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” ν΄λž˜μŠ€μ— λΉ„ν•΄ μ œν•œμ μΈ κΈ°λŠ₯을 μ œκ³΅ν•˜λ―€λ‘œ 였히렀 κ°„λ‹¨ν•˜λ‹€.
  • κ΅¬μ‘°μ²΄λŠ” Value type 으둜 μƒˆλ‘œμš΄ λ³€μˆ˜μ— ν• λ‹Ήν•˜κ±°λ‚˜ ν•¨μˆ˜μ— 전달 μ‹œ 항상 λ³΅μ‚¬ν•΄μ„œ μ‚¬μš©ν•˜λ―€λ‘œ, νŠΉμ • ꡬ쑰체λ₯Ό 변경해도 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ‹€λ₯Έ 뢀뢄은 영ν–₯받지 μ•ŠλŠ”λ‹€. 

 

πŸ’‘ Swift μ—μ„œ ꡬ쑰체와 클래슀λ₯Ό μ„ νƒν•˜λŠ” 기쀀은?!

 

μ• ν”Œμ˜ κ°€μ΄λ“œλΌμΈμ—μ„œ ꢌμž₯ν•˜λŠ” λ‚΄μš©μ΄κ³ , μ•„λž˜ λͺ©λ‘μ— ν•΄λ‹Ήν•˜λ©΄ ꡬ쑰체λ₯Ό μ‚¬μš©ν•˜κ³  μ•„λ‹Œ 경우 클래슀λ₯Ό μ‚¬μš©ν•˜λŠ” κ±Έ ꢌμž₯ν•©λ‹ˆλ‹€. 즉, μƒμ†μ΄λ‚˜ 레퍼런슀 μ°Έμ‘°κ°€ ν•„μš”ν•œ κ²½μš°μ—λ§Œ 클래슀λ₯Ό μ‚¬μš©ν•˜λ„λ‘ ν•©μ‹œλ‹€.

 

  • νƒ€μž… μƒμ„±μ˜ λͺ©μ μ΄ "κ°„λ‹¨ν•œ λͺ‡κ°œμ˜ 값을 μΊ‘μŠν™”ν•˜λŠ” 것" 일 λ•Œ
  • μΊ‘μŠν™”ν•œ 값을 μ „λ‹¬ν•˜κ±°λ‚˜ ν• λ‹Ήν•  λ•Œ μ°Έμ‘°ν•˜λŠ” 게 μ•„λ‹Œ, λ³΅μ‚¬ν•˜λŠ” 경우
  • ꡬ쑰체에 μ˜ν•΄ μ €μž₯λ˜λŠ” property κ°€ μ°Έμ‘°κ°€ μ•„λ‹Œ 볡사λ₯Ό μœ„ν•œ Value type 인 경우
  • 기쑴의 νƒ€μž…μ˜ property λ‚˜ method λ₯Ό μƒμ†λ°›κ±°λ‚˜, 상속할 ν•„μš”κ°€ μ—†λŠ” 경우

 

πŸ‘©‍πŸ’» 배운점 / λŠλ‚€μ  

주둜 λ‹€λ₯Έ μ–Έμ–΄μ—μ„œλŠ” κ°„λ‹¨ν•œ μ’Œν‘œ μ €μž₯ λ“±μ—λ§Œ ꡬ쑰체λ₯Ό μ‚¬μš©ν•˜κ³ , λŒ€λΆ€λΆ„μ€ 클래슀λ₯Ό μ‚¬μš©ν–ˆμ—ˆλŠ”λ°μš”. 온라인 κ°•μ˜μ—μ„œ Swift μ—μ„œλŠ” λŒ€λΆ€λΆ„ 데이터 νƒ€μž…μ΄ ꡬ쑰체둜 μ΄λ€„μ Έμžˆλ‹€λŠ” κ±Έ λ“£κ³  λ†€λž¬μ—ˆμ–΄μš”.. λ§ˆμ§€λ§‰ μ •λ¦¬λ‚΄μš©μΈ ꡬ쑰체 / 클래슀λ₯Ό μ„ νƒν•˜λŠ” 기쀀을 잘 κΈ°μ–΅ν•˜κ³  ν™œμš©ν•΄μ•Όκ² λ‹€ μ‹ΆμŠ΅λ‹ˆλ‹€! 


참고 링크

728x90
728x90