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

23. νƒ€μž… μΊμŠ€νŒ… - iOS ν”„λ‘œκ·Έλž˜λ°μ„ μœ„ν•œ μŠ€μœ„ν”„νŠΈ 기초

reujusong 2020. 6. 22. 20:29

 - μŠ€μœ„ν”„νŠΈ νƒ€μž… μΊμŠ€νŒ…

  • μΈμŠ€ν„΄μŠ€μ˜ νƒ€μž…μ„ 확인 ν•˜λŠ” μš©λ„  
  • 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό λΆ€λͺ¨ ν˜Ήμ€ μžμ‹ 클래슀의 νƒ€μž…μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλŠ”μ§€ 확인 ν•˜λŠ” μš©λ„
  • is, asλ₯Ό μ‚¬μš©ν•œλ‹€.

* ν˜•λ³€ν™˜μ€ 'ex. let someDouble = Double(2)'  νƒ€μž… μΊμŠ€νŒ…μ΄ μ•„λ‹ˆλΌ μƒˆλ‘œμš΄ 값을 μƒμ„±ν•˜λŠ” 것이닀.

 

 

 - 예제 클래슀

 

 - νƒ€μž…ν™•μΈ

isλ₯Ό μ‚¬μš©ν•˜μ—¬ νƒ€μž…μ„ ν™•μΈν•œλ‹€.

 

 

 - μ—… μΊμŠ€νŒ…(Up Casting)

  • asλ₯Ό μ‚¬μš©ν•˜μ—¬ λΆ€λͺ¨ν΄λž˜μŠ€μ˜ μΈμŠ€ν„΄μŠ€λ‘œ μ‚¬μš©ν•  수 μžˆλ„λ‘ μ»΄νŒŒμΌλŸ¬μ—κ²Œ νƒ€μž…μ •λ³΄λ₯Ό μ „ν™˜ν•΄μ€€λ‹€.
  • Any ν˜Ήμ€ AnyObjectλ‘œλ„ νƒ€μž…μ •λ³΄λ₯Ό λ³€ν™˜ν•  수 μžˆλ‹€.
  • μ•”μ‹œμ μœΌλ‘œ μ²˜λ¦¬λ˜λ―€λ‘œ κΌ­ ν•„μš”ν•œ κ²½μš°κ°€ μ•„λ‹ˆλΌλ©΄ μƒλž΅ν•΄λ„ λ¬΄λ°©ν•˜λ‹€.

 

 - λ‹€μš΄ μΊμŠ€νŒ…(Down Casting)

as? λ˜λŠ” as!λ₯Ό μ‚¬μš©ν•˜μ—¬ μžμ‹ 클래슀의 μΈμŠ€ν„΄μŠ€λ‘œ μ‚¬μš©ν•  수 μžˆλ„λ‘ μ»΄νŒŒμΌλŸ¬μ—κ²Œ μΈμŠ€ν„΄μŠ€μ˜ νƒ€μž…μ •λ³΄λ₯Ό μ „ν™˜ν•΄μ€€λ‹€.

 

A. 쑰건뢀 λ‹€μš΄ μΊμŠ€νŒ…

  • as?λ₯Ό μ‚¬μš©ν•œλ‹€.
  • μΊμŠ€νŒ…μ— μ‹€νŒ¨ν•˜λ©΄, 즉 μΊμŠ€νŒ…ν•˜λ €λŠ” νƒ€μž…μ— λΆ€ν•©ν•˜μ§€ μ•ŠλŠ” μΈμŠ€ν„΄μŠ€λΌλ©΄ nil을 λ°˜ν™˜ν•˜κΈ° λ•Œλ¬Έμ— 결과의 νƒ€μž…μ€ μ˜΅μ…”λ„ νƒ€μž…μ΄λ‹€.

 

B. κ°•μ œ λ‹€μš΄ μΊμŠ€νŒ…

  • as!λ₯Ό μ‚¬μš©ν•œλ‹€.
  • μΊμŠ€νŒ…μ— μ‹€νŒ¨ν•˜λ©΄, 즉 μΊμŠ€νŒ…ν•˜λ €λŠ” νƒ€μž…μ— λΆ€ν•©ν•˜μ§€ μ•ŠλŠ” μΈμŠ€ν„΄μŠ€λΌλ©΄ λŸ°νƒ€μž„ 였λ₯˜κ°€ λ°œμƒν•œλ‹€.
  • μΊμŠ€νŒ…μ— μ„±κ³΅ν•˜λ©΄ μ˜΅μ…”λ„μ΄ μ•„λ‹Œ 일반 νƒ€μž…μ„ λ°˜ν™˜ν•œλ‹€.

 

 - ν™œμš©