[Swift ๊ธฐ์ดˆ] 00. Swift ์–ธ์–ด์˜ ํŠน์ง•์€ ๋ฌด์—‡์ผ๊นŒ?

2021. 1. 6. 10:23ใ†๐Ÿง‘๐Ÿป‍๐Ÿ’ป iOS ๊ฐœ๋ฐœ/Swift

ํ•ด๋‹น ๊ธ€์€ ์•ผ๊ณฐ๋‹˜์˜ ์Šค์œ„ํ”„ํŠธ ๊ฐ•์˜์™€ ๊ฐœ์ธ์ ์ธ ๊ณต๋ถ€๋ฅผ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.


1. Swift ์˜ ์–ธ์–ด์  ํŠน์ง•

  • Designed for Safety (์•ˆ์ „์„ฑ)

    Swift๋Š” ์•ˆ์ „ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค. Swift๋Š” ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ์˜ ์ „์ฒด ํด๋ž˜์Šค๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ์—„๊ฒฉํ•œ ๋ฌธ๋ฒ•์„ ์ ์šฉํ•˜์—ฌ ๋ฏธ๋ฆฌ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, Swift์˜ ๊ฐ์ฒด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ nil์ด ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์˜ต์…”๋„์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ ํƒ€์ž„์˜ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ guard ๊ตฌ๋ฌธ, ์˜ค๋ฅ˜์ฒ˜๋ฆฌ, ๊ฐ•๋ ฅํ•œ ํƒ€์ž… ํ†ต์ œ๋ฅผ ํ†ตํ•ด ์•ˆ์ „ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ถ”๊ตฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • Fast and Powerful (์‹ ์†์„ฑ)

    Swift๋Š” C ์™€ Objective - C ์–ธ์–ด์˜ ๊ณ„์Šน์ž๋กœ์„œ low - level ์˜ ํƒ€์ž…, ํ๋ฆ„ ์ œ์–ด, ์—ฐ์‚ฐ์ž๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํด๋ž˜์Šค, ํ”„๋กœํ† ์ฝœ, ์ œ๋„ˆ๋ฆญ ๋“ฑ ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์˜ ํŠน์ง•๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 


  • Modern (์„ธ๋ จ๋œ ํ‘œํ˜„) 

    Swift๋Š” ์ˆ˜๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์žฅ๋‹จ์ ๋“ค์„ ์—ฐ๊ตฌํ•˜์—ฌ ๋งŒ๋“ค์–ด ์กŒ์œผ๋ฉฐ ๊น”๋”ํ•œ ๋ฌธ๋ฒ•๊ณผ ๋” ์ฝ๊ธฐ ํŽธํ•˜๊ณ  ์œ ์ง€ ๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์„ธ๋ฏธ์ฝœ๋ก (;) ์€ ํ•„์š”์—†์–ด์กŒ์œผ๋ฉฐ ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „ ์„ธ๊ณ„์˜ ๋งŽ์€ ์–ธ์–ด๋“ค๊ณผ ์ด๋ชจ์ง€๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

      ์ฐธ์กฐ : developer.apple.com/swift/#safety


2. Swift ๋Š” ๋‹ค์ค‘ ํŒจ๋Ÿฌ๋‹ค์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด 

Swift๋Š” ๋ช…๋ นํ˜• , ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜์—ฌ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ๊ณผ ํ”„๋กœํ† ์ฝœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ง€ํ–ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ž…๋‹ˆ๋‹ค. C , C++ , JAVA๋ฅผ ๊ณต๋ถ€ํ•˜์…จ๋‹ค๋ฉด ์•ž์˜ 2๊ฐœ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์€ ์ด๋ฏธ ์•„์‹œ๋ฆฌ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. 

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

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

    • ์–ด๋–ค ์ƒํ™ฉ์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋”๋ผ๋„ ์ผ์ •ํ•˜๊ฒŒ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๊ฐ’ ๋ณ€ํ™”๋ฅผ ๋ฉ€๋ฆฌํ•˜๋ฏ€๋กœ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๊ฐ๊ฐ ์ƒํ˜ธ ๊ฐ„์— ๋ฐฐํƒ€์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    • ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ, ๋ฉ€ํ‹ฐ ์ฝ”์–ด์˜ ํ™˜๊ฒฝ์—์„œ ํšจ์œจ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • ํ”„๋กœํ† ์ฝœ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ 

    2015๋…„ WWDC์—์„œ Swift 2.0 ๋ฒ„์ „์˜ ๋ฐœํ‘œ์™€ ํ•จ๊ป˜ Swift์— ํ”„๋กœํ† ์ฝœ๊ณผ ์ต์Šคํ…์…˜์ด ์ถ”๊ฐ€๋˜์–ด ํ”„๋กœํ† ์ฝœ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Swift๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํƒ€์ž…์ด ํด๋ž˜์Šค(์ฐธ์กฐ ํƒ€์ž…)๊ฐ€ ์•„๋‹Œ ๊ตฌ์กฐ์ฒด(๊ฐ’ ํƒ€์ž…)๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ƒ์†์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ์ฒด๋กœ ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ”„๋กœํ† ์ฝœ๊ณผ ์ต์Šคํ…์…˜์ž…๋‹ˆ๋‹ค.

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

    ํ”„๋กœํ† ์ฝœ๊ณผ ์ต์Šคํ…์…˜์— ๋Œ€ํ•œ ๊ณต๋ถ€๋Š” ์ถ”ํ›„ ํฌ์ŠคํŒ…์— ๋‚จ๊ธฐ๊ฒ ์Šต๋‹ˆ๋‹ค.

3. Swift ์˜ ๋ช‡ ๊ฐ€์ง€ ํŠน์ง• 

  • ARC (Automatic Reference Counting: ์ž๋™ ์ฐธ์กฐ ํšŸ์ˆ˜ ๊ณ„์‚ฐ)

    Swift๋Š” ARC๋ฅผ ์ง€์›ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ARC๊ฐ€ ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค๊ฐ€ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๋•Œ ์ธ์Šคํ„ด์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๋น„์›๋‹ˆ๋‹ค (๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌ). ์ด ARC๋Š” ๋ง๊ทธ๋Œ€๋กœ ์ฐธ์กฐ ํƒ€์ž…์ธ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์—๋งŒ ์ ์šฉ๋˜๋ฉฐ ๊ฐ’ ํƒ€์ž…์ธ ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•์€ ํ•ด๋‹น ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

    ARC ๋™์ž‘ ๋ฐฉ์‹ ์ฐธ๊ณ 

  • REPL (Read-Eval-Print-Loop) ๋กœ๋„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค

    REPL์€ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๋ฐ”๋กœ๋ฐ”๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

  • Swift๋Š” ์˜คํ”ˆ์†Œ์Šค๋กœ ์ „ํ™˜๋œ ํ›„ macOS ์ด์™ธ์˜ ํ™˜๊ฒฝ ๋ฆฌ๋ˆ…์Šค, ์œˆ๋„์šฐ์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • Swift ๊ณต์‹ ๋ธ”๋กœ๊ทธ

  • Swift ๊ณต์‹ Laguague Guide

 


4. ๋งˆ๋ฌด๋ฆฌ

Swift๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ ์•ž์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ทธ ํŠน์ง•์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ์„ค๋ช…์ด ์ž˜๋ชป๋œ ๋ถ€๋ถ„์ด๋‚˜ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„ ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ^^