Swift

[ SWIFT ] ์Šค์œ„ํ”„ํŠธ๋ž€?

Forest Yun 2021. 7. 4. 23:31
728x90

๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

 

Chapter 1. ์Šค์œ„ํ”„ํŠธ

1. ์Šค์œ„ํ”„ํŠธ๋ž€?

  • ARC (Automatic Reference Counting ์ž๋™ ์ฐธ์กฐ ํšŸ์ˆ˜ ๊ณ„์‚ฐ) ์ง€์› -๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์‰ฌ์›€
  • ์ปดํŒŒ์ผ ์–ธ์–ด
  • ํ”„๋กœ๊ทธ๋žจ์„ ๋นŒ๋“œ, ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ • ๋ถˆํ•„์š”. ์ฝ”๋“œ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์–ธ์–ด์˜ ์ž์œ ๋„๊ฐ€ ๋†’๋‹ค

 

2. ์Šค์œ„ํ”„ํŠธ์˜ ์–ธ์–ด์  ํŠน์ง•

  • Safe - ์•ˆ์ „ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€ํ–ฅ <- ์—„๊ฒฉํ•œ ๋ฌธ๋ฒ• ์ ์šฉ
  • Fast - ์‹ ์†์„ฑ
  • Expression - ๋” ๋‚˜์€ ํ‘œํ˜„์„ฑ

 

 

 

 


 

 

 

3. ์Šค์œ„ํ”„ํŠธ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„:
๊ณ„์‚ฐ ๋ชจ๋ธ์„ ๊ณต์œ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ์˜ํ•œ ํŠน์ง•์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ถ”์ƒํ™”๋ž€ ๊ฐœ๋….
์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ’€์–ด์•ผ ํ•  ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  ๊ทธ๊ฒƒ์„ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ์„œ ๊ธฐ์ˆ ํ•  ๋•Œ, ๋ฌด์—‡์„ ์ฐฉ์•ˆํ•ด์„œ ๋ฌธ์ œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ๋ฌด์—‡์„ ์ค‘์‹ฌ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•  ๊ฒƒ์ธ๊ฐ€ ๋”ฐ์œ„์— ๋Œ€ํ•œ ๋ฐฉํ–ฅ์„ ๋ถ€์—ฌํ•œ๋‹ค.

 

์Šค์œ„ํ”„ํŠธ๋Š” ๋‹ค์ค‘ ํŒจ๋Ÿฌ๋‹ค์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค. ์ •ํ™•ํ•˜๊ฒŒ๋Š” ๋ช…๋ นํ˜•๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ํ”„๋กœํ† ์ฝœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ง€ํ–ฅํ•œ๋‹ค.

์ฆ‰, ์Šค์œ„ํ”„ํŠธ์• ์„œ ๊ฐ€์žฅ ๊ฐ•์กฐํ•˜๋Š” ๋ถ€๋ถ„์€ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„๊ณผ ํ”„๋กœํ† ์ฝœ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋‹ค.

 

 

 

 

3.1 ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„

ํ‚ค์›Œ๋“œ: ๋…๋ฆฝ์   ํด๋ž˜์Šค  ๊ฐ์ฒด  ๋ฉ”์„œ๋“œ

  • '๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ' ์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.
  • ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ๋œ ๋‹จ์œ„์ธ ๊ฐ์ฒด์˜ ๋ชจ์ž„์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ ์ž ํ•˜๋Š” ์‹œ๊ฐ์ด๋‹ค.
  • ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋Š” ์„œ๋กœ ๋ฉ”์„ธ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํด๋ž˜์Šค์— ํ•˜๋‚˜์˜ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๋ชจ์•„๋†“์€ ๋ฐฉ์‹์œผ๋กœ ์‘์ง‘๋ ฅ์„ ๊ฐ•ํ™”ํ•œ๋‹ค. ๋˜ ๊ฐ ํด๋ž˜์Šค๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ๋˜๋„๋ก ๋””์ž์ธํ•ด ๊ฒฐํ•ฉ๋ ฅ์„ ์•ฝํ™”ํ•œ๋‹ค. -> ์†Œํ”„ํŠธ์›จ์–ด์˜ ์งˆ ํ–ฅ์ƒ ๋ชฉ์ 

 

ํด๋ž˜์Šค Class ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ(๊ฐ™์€ ์ข…๋ฅ˜์˜ ์ง‘๋‹จ์— ์†ํ•˜๋Š”) ์†์„ฑ๊ณผ ํ–‰์œ„๋ฅผ ์ •์˜ํ•œ ๊ฒƒ.
๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ธฐ ์œ„ํ•œ ์ฒญ์‚ฌ์ง„
ํด๋ž˜์Šค๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค ๋˜๋Š” ์™ธ๋ถ€ ์š”์†Œ์™€ ๋…๋ฆฝ์ ์œผ๋กœ ๋””์ž์ธํ•ด์•ผ ํ•œ๋‹ค
๊ฐ์ฒด Object ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค, ์‹ค์ œ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜์–ด ๋™์ž‘ํ•˜๋Š” ๋ชจ์–‘์„ ๊ฐ–์ถ˜ ๊ฒƒ.

๊ฐ์ฒด == ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค
๊ฐ์ฒด != ์ธ์Šคํ„ด์Šค
๋ฉ”์„œ๋“œ Method ๋˜๋Š” ๋ฉ”์‹œ์ง€ Message ๊ฐ์ฒด๊ฐ€ ํด๋ž˜์Šค์— ์ •์˜๋œ ํ–‰์œ„๋ฅผ ์‹ค์งˆ์ ์œผ๋กœ ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.
๊ฐ์ฒด ๊ฐ„์˜ ๋ช…๋ น ์ „๋‹ฌ ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์€ ๋ฉ”์„œ๋“œ(๋ฉ”์‹œ์ง€)๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด ์ง„๋‹ค.
์ด๋Ÿฌํ•œ ํ–‰์œ„๋ฅผ '๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.' ๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.

 

 

 

3.2 ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„

ํ‚ค์›Œ๋“œ: ํ•จ์ˆ˜  ํ•จ์ˆ˜์˜ ์กฐํ•ฉ  ๋ฐฐํƒ€์  ์‹คํ–‰  ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ  ์ผ๊ธ‰ ๊ฐ์ฒด

  • ํ•จ์ˆ˜๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ์‚ฌ๊ณ ๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ฒƒ
  • ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํƒœ ๋ณ€ํ™”์—†์ด ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ•™์  ํ•จ์ˆ˜์˜ ์กฐํ•ฉ์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค. ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ํ•จ์ˆ˜๊ฐ€ ํŠน์ • ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋ฐ˜๋Œ€๋˜๋Š” ๊ฐœ๋…์œผ๋กœ, ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•ด๋„ ํ•จ์ˆ˜ ์™ธ๋ถ€์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†๋‹ค.
  • ๋”ฐ๋ผ์„œ ์–ด๋–ค ์ƒํ™ฉ์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋”๋ผ๋„ ์ผ์ •ํ•˜๊ฒŒ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๊ฐ๊ฐ ์ƒํ˜ธ ๊ฐ„์„ญ์—†์ด ๋ฐฐํƒ€์ ์œผ๋กœ ์‹คํ–‰
  • ๊ฐ•์  : ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ
  • ํ•จ์ˆ˜๋ฅผ ์ผ๊ธ‰๊ฐ์ฒด (First-class Citizen) ๋กœ ๋‹ค๋ฃฌ๋‹ค. ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ, ์ „๋‹ฌ, ๋ฐ˜ํ™˜ ๋“ฑ ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
    • ์ „๋‹ฌ์ธ์žArgument๋กœ ์ „๋‹ฌ ๊ฐ€๋Šฅ
    • ๋™์  ํ”„๋กœํผํ‹ฐ ํ• ๋‹น ๊ฐ€๋Šฅ
    • ๋ณ€์ˆ˜๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์•ˆ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.
    • ๋ฐ˜ํ™˜ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ 
    • ํ• ๋‹นํ•  ๋•Œ ์‚ฌ์šฉ๋œ ์ด๋ฆ„๊ณผ ๊ด€๊ณ„์—†์ด ๊ณ ์œ ํ•œ ๊ฐ์ฒด๋กœ ๊ตฌ๋ณ„ ๊ฐ€๋Šฅ

 

  ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ(์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ) ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ํ”„๋กœ๊ทธ๋žจ์ด๋ž€? ๋ช…๋ น์˜ ์ˆ˜ํ–‰ ํ•จ์ˆ˜์˜ ๊ณ„์‚ฐ
์ค‘์ ์  ์‹œ๊ฐ How ์–ด๋–ป๊ฒŒ
์ž‘์—… ์ˆ˜ํ–‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜/ ์ƒํƒœ ๋ณ€๊ฒฝ ์ถ”์ 
What ๋ฌด์—‡์„
์›ํ•˜๋Š” ์ •๋ณด/ ํ•„์š”ํ•œ ๋ณ€ํ™˜
์ƒํƒœ ๋ณ€๊ฒฝ/ ์‹คํ–‰ ์ˆœ์„œ ์ค‘์š”/ ์ค‘์š” ์—†์Œ/ ๋‚ฎ์€ ์ค‘์š”๋„
์ฃผ์š” ํ๋ฆ„ ์ œ์–ด ์ œ์–ด๊ตฌ๋ฌธ(๋ฐ˜๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ ๋“ฑ)
ํ•จ์ˆ˜(๋ฉ”์„œ๋“œ) ํ˜ธ์ถœ
์žฌ๊ท€์  ๊ตฌ์กฐ ๋“ฑ์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ์ œ์–ด
์ฃผ์š” ์กฐ์ž‘ ๋‹จ์œ„ ํด๋ž˜์Šค๋‚˜ ๊ตฌ์กฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค ํ•จ์ˆ˜

 

 

 

 

3.3 ํ”„๋กœํ† ์ฝœ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

 

[ ์งง์€ ] 3 - ํ”„๋กœํ† ์ฝœ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

Swift๋Š” ํ”„๋กœํ† ์ฝœ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ 2015๋…„ ํ”„๋กœํ† ์ฝœ Extension์ด ๋„์ž…๋œ Swift 2.0 ๋ฒ„์ „์ด ๋ฐœํ‘œ๋˜๋ฉฐ Apple์€ Swift๊ฐ€ ํ”„๋กœํ† ์ฝœ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ ์„ ์–ธํ–ˆ๋‹ค. ๋”ํ•ด ํ”„๋กœํ† ์ฝœ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ฐธ์กฐ ํƒ€์ž…

88yhtserof.tistory.com

 

 

 

 

 

๊ณต๋ถ€ ์ž๋ฃŒ

์•ผ๊ณฐ - ์Šค์œ„ํ”„ํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ 5ํŒ (SWIFT5)
https://velog.io/@kyusung/ํ•จ์ˆ˜ํ˜•-ํ”„๋กœ๊ทธ๋ž˜๋ฐ-์š”์•ฝ
๋„ค์ด๋ฒ„ ์‚ฌ์ „ ๋˜๋Š” ๋‹ค๋ฅธ ์‚ฌ์ „
728x90