ํ๋กํ ์ฝ ์งํฅ ํ๋ก๊ทธ๋๋ฐ Protocol - Oriented Programming ํ๋กํ ์ฝ ์งํฅ ํ๋ก๊ทธ๋๋ฐ ํํ ์๊ณ ์๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ : ์ฌ๋ฌผ์ ๊ฐ์ฒด๋ก ํ์ฑํ์ฌ ๊ณตํต์ ์ ๊ฐ๋ ๋ชจ๋ ๊ณณ์์ ์์๋ฐ๋ ๊ฐ์ฒด ๋ด๋ถ์ ๋ชจ๋ ๋ก์ง์ ์บก์ํํ๋ค. ์๋ ํ์ง ์์๋ ์์ํ๋ค๋ ์ด์ ๋ก ๋ชจ๋ ์์ฑ๊ณผ ํ์๋ฅผ ๊ณต์ ํด์ผํ๋ฉฐ, ๋ณต์กํ ์์ ๊ตฌ์กฐ๋ฅผ ์ง๋ ํด๋์ค๋ฅผ ์์ํ๋ค๋ฉด ์ํ๋ ํด๋์ค๋ฅผ ์ฐธ์กฐํด์ผ ํ ๋ ๋ค์ด์บ์คํ ์ ํด์ผ ํ๋ค. ๋ํ ํฐ ๋จ์ ์ ๋จ ํ๋์ SuperClass๋ง ์์ํ ์ ์๋ค๋ ์ ์ด๋ค. ์๊ฐ์ด ํ๋ฅด๋ฉด ๊ธฐ๋ฅ๋ ํ์ฅํ๊ธฐ ๋ง๋ จ์ด๋ฏ๋ก ๋ณต์ก๋๋ ๋์์ง๊ณ ๊ด๋ฆฌ๋ ์ด๋ ค์์ง๋ค. ํ๋กํ ์ฝ ์งํฅ ํ๋ก๊ทธ๋๋ฐ : ํ์ํ ๋ถ๋ถ๋ง ํ๋กํ ์ฝ๋ก ๋ถ๋ฆฌํด์ ๋ง๋ค ์ ์๊ณ ๋ค์ค ํ๋กํ ์ฝ์ ๊ตฌํํ ์ ์๋ค. ๊ฒ๋ค๊ฐ ํ๋กํ ์ฝ ๊ท์น์ clas..
์ ๋ค๋ฆญ ์ ๋ค๋ฆญ์ด๋ ? ํ์ ์ ์์กดํ์ง ์๋ ๋ฒ์ฉ ์ฝ๋๋ฅผ ์์ฑ ํ ๋๋ง๋ค ์ฌ์ฉํ๋ค. ์ ๋ค๋ฆญ์ ์ฌ์ฉํ๋ฉด ์ค๋ณต์ ํผํ๊ณ , ์ฝ๋๋ฅผ ์ ์ฐํ๊ฒ ์์ฑํ ์ ์๋ค. Apple์ ์ํ๋ฉด Swift์์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ค ํ๋์ด๋ฉฐ, Swift ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค์๋ ์ ๋ค๋ฆญ์ผ๋ก ์ ์ธ๋์ด ์๋ค. ์๋ฅผ ๋ค์ด Array, Dictionary ๋ํ ์ ๋ค๋ฆญํ์ ์ด๋ค. ์ ๋ค๋ฆญ ํจ์ ๋๊ฐ์ ์ธ์๋ฅผ ๋ฐ์ Intํ์ ์ ๊ฐ์ swapํ๋ ํจ์๋ฅผ ๊ตฌํํ๋ค๋ฉด, func swapTwoInts(_ a: inout Int, _ b: inout Int) { let tempA = a a = b b = tempA } ์ด๋ ๊ฒ ๊ตฌํํ๋ค. ํ๋ผ๋ฏธํฐ๊ฐ ๋ชจ๋ Intํ ์ผ๊ฒฝ์ฐ์ ์ ๋์๊ฐ๋ ์ฝ๋์ด๋ค. ํ์ง๋ง ๋ง์ฝ์ ํ๋ผ๋ฏธํฐ ๊ฐ์ด Double, String์ผ ๊ฒฝ์ฐ์..
๋ชจ๋๋ ๋ชจ๋๋๋ ํน์ ๊ธฐ๋ฅ์ด ์๋ ๋์์ธ ํจํด ํน์ ์๋ฃ๊ตฌ์กฐ๋ผ๊ณ ํ ์ ์๋ค. ํ์ ์ ์ธ์๋ก ๋ฐ๋ ํ์ ( ํน์ ํ์ ์ ๊ฐ์ ํฌ์ฅ ) ํน์ ํ์ ์ ๊ฐ์ ํฌ์ฅํ ๊ฒ์ ๋ฐํํ๋ ํจ์(๋ฉ์๋)๊ฐ ์กด์ฌ ํฌ์ฅ๋ ๊ฐ์ ๋ณํํ์ฌ ๊ฐ์ ํํ๋ก ํฌ์ฅํ๋ ํจ์(๋ฉ์๋)๊ฐ ์กด์ฌ ์ปจํ ์คํธ ์ปจํ ์คํธcontext๋ ์ปจํ ์ธ ๋ฅผ ๋ด์ ์์ ๊ฐ์ ๊ฒ ํจ์์ ์ ๋ฌ์ธ์๋ก ์ปจํ ์คํธ๊ฐ ๋ค๋ฅธ ๊ฐ์ ์ ๋ฌํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. func addThree(_ num: Int) -> Int { return num + 3 } //๋งค๊ฐ๋ณ์๋ก ์ผ๋ฐ Int ํ์ ์ ๊ฐ์ ๋ฐ๊ธฐ ๋๋ฌธ์ ์ ์์ ์ผ๋ก ์คํ addThree(2) //์ ๋ฌ์ธ์๊ฐ ์์ํ ๊ฐ์ด ์๋ ์ต์ ๋์ด๋ผ๋ ์ปจํ ์คํธ๋ก ๋๋ฌ์ธ์ฌ ์ ๋ฌ๋์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ ๋ฐ์ addThree(..
๋งต, ํํฐ, ๋ฆฌ๋์ค ์ค์ํํธ๋ ํจ์๋ฅผ ์ผ๊ธ ๊ฐ์ฒด๋ก ์ทจ๊ธํ๋ค. ๋ฐ๋ผ์ ํจ์๋ฅผ ๋ค๋ฅธ ํจ์์ ์ ๋ฌ์ธ์๋ก ์ฌ์ฉํ ์ ์๋ค. ๋งค๊ฐ๋ณ์๋ก ํจ์๋ฅผ ๊ฐ๋ ํจ์๋ฅผ ๊ณ ์ฐจํจ์๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ, ๋ํ์ ์ธ ๊ณ ์ฐจํจ์๋ก ๋งต, ํํฐ, ๋ฆฌ๋์ค๊ฐ ์๋ค. ๋งต ์์ ์ ํธ์ถํ ๋ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ ํจ์๋ฅผ ์คํํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ๋ฐํํด์ฃผ๋ ํจ์ ์ค์ํํธ์์ ๋งต์ ๋ฐฐ์ด, ๋์ ๋๋ฆฌ, ์ธํธ, ์ต์ ๋ ๋ฑ์์ ์ฌ์ฉํ ์ ์๋ค. ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋๋ฐ ๋ง์ด ์ฌ์ฉํ๋ค. for-in ๊ตฌ๋ฌธ๊ณผ ๋งต ๋ฉ์๋์ ์ฌ์ฉ ๋น๊ต let numbers: [Int] = [0,1,2,3,4] var doubledNumbers: [Int] = [Int]() var strings: [String] = [String]() // for ๊ตฌ๋ฌธ ์ฌ์ฉ for number in numbers..
์ต์ ๋ ์ฒด์ด๋ ์ต์ ๋์ ์ํด ์๋ nil ์ผ์ง๋ ๋ชจ๋ฅด๋ ํ๋กํผํฐ, ๋ฉ์๋, ์๋ธ์คํฌ๋ฆฝ์ ๋ฑ์ ๊ฐ์ ธ์ค๊ฑฐ๋ ํธ์ถํ ๋ ์ฌ์ฉํ ์ ์๋ ์ผ๋ จ์ ๊ณผ์ . ์ฆ, ์ต์ ๋์ ๋ฐ๋ณต์ฌ์ฉํ์ฌ ์ต์ ๋์ด ์์ ๊ฑฐ ์ฒด์ธ์ฒ๋ผ ์๋ก ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ๊ณ ์๋ ๋ชจ์์ด๊ธฐ ๋๋ฌธ์ ์ต์ ๋ ์ฒด์ด๋์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์์ ๊ฑฐ ์ฒด์ธ์์ ํ ์นธ์ด๋ผ๋ ์๊ฑฐ๋ ๊ณ ์ฅ ๋๋ฉด ์ฒด์ธ ์ ์ฒด๊ฐ ๋์ํ์ง ์๋ฏ์ด ์ค์ฒฉ๋ ์ต์ ๋ ์ค ํ๋๋ผ๋ ๊ฐ์ด ์กด์ฌํ์ง ์๋๋ค๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก nil ๋ฐํ ์ต์ ๋ ์ฒด์ด๋์ ํ๋กํผํฐ๋ ๋ฉ์๋ ๋๋ ์๋ธ์คํฌ๋ฆฝํธ๋ฅผ ํธ์ถํ๊ณ ์ถ์ ์ต์ ๋ ๋ณ์๋ ์์ ๋ค์ ๋ฌผ์ํ(?)๋ฅผ ๋ถ์ฌ ํํํ๋ค. ์ต์ ๋์ด nil์ด ์๋๋ผ๋ฉด ์ ์์ ์ผ๋ก ํธ์ถ๋ ๊ฒ์ด๊ณ , nil์ด๋ผ๋ฉด ๊ฒฐ๊ด๊ฐ์ผ๋ก nil์ ๋ฐํํ ๊ฒ์ด๋ค. ! ( ๋๋ํ ) ๋ฌผ์ํ ๋์ ์ ๋๋ํ๋ฅผ ์ฌ์ฉํ ์๋์๋๋ฐ, ์ด๋ ์ต์ ๋์..
ํด๋ก์ ํด๋ก์ ๋ ์ฌ์ฉ์์ ์ฝ๋ ์์์ ์ ๋ฌ๋์ด ์ฌ์ฉํ ์ ์๋ ๋ก์ง์ ๊ฐ์ง ์ค๊ดํธ{} ๊ตฌ๋ถ๋ ์ฝ๋์ ๋ธ๋ญ์ด๋ค. ์ฝ๊ฒ ๋งํ๋ฉด '์ด๋ฆ์ด ์๋ ํจ์'์ด๋ค. ๋ฐ๋ผ์ ํจ์๋ ์ด๋ฆ์ด ์๋ ํด๋ก์ ๋ผ๊ณ ํ ์ ์๋ค. ํด๋ก์ ๋ ๋ณ์๋ ์์๊ฐ ์ ์ธ๋ ์์น์์ ์ฐธ์กฐ๋ฅผ ํ๋ํ๊ณ ์ ์ฅํ ์ ์๋ค. ๐ก ํด๋ก์ ์ 3๊ฐ์ง ํํ ์ด๋ฆ์ด ์์ผ๋ฉด์ ์ด๋ค ๊ฐ๋ ํ๋ํ์ง ์์ ์ ์ญํจ์์ ํํ ์ด๋ฆ์ด ์์ผ๋ฉด์ ๋ค๋ฅธ ํจ์ ๋ด๋ถ์ ๊ฐ์ ํ๋ํ ์ ์๋ ์ค์ฒฉ๋ ํจ์์ ํํ ์ด๋ฆ์ด ์๊ณ ์ฃผ๋ณ ๋ฌธ๋งฅ์ ๋ฐ๋ผ ๊ฐ์ ํ๋ํ ์ ์๋ ์ถ์ฝ ๋ฌธ๋ฒ์ผ๋ก ์์ฑํ ํํ ๐ก ํด๋ก์ ์ ๋ค์ํ ํํ ํด๋ก์ ๋ ๋งค๊ฐ๋ณ์์ ๋ฐํ ๊ฐ์ ํ์ ์ ๋ฌธ๋งฅ์ ํตํด ์ ์ถํ ์ ์๊ธฐ ๋๋ฌธ์ ๋งค๊ฐ๋ณ์์ ๋ฐํ ๊ฐ์ ํ์ ์ ์๋ตํ ์ ์๋ค. ํด๋ก์ ์ ๋จ ํ์ค์ ํํ๋ง ๋ค์ด์๋ค๋ฉด ์์์ ์ผ๋ก ์ด๋ฅผ ๋ฐ..
์ ๊ทผ์ ์ด ์ ๊ทผ์ ์ด = ์๋ํ ์ ๊ทผ์ ์ด๋ฅผ ํตํด ์์ธ ๊ตฌํ์ ์จ๊ธฐ๊ณ ํ์ฉ๋ ๊ธฐ๋ฅ๋ง ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค. ์ ๊ทผ์ ์ด์ ํ์์ฑ ์ธ๋ถ์์ ๋ณด๊ฑฐ๋ ์ ๊ทผํ๋ฉด ์๋๋ ์ฝ๋๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ ๊ทผ์์ค public : ๊ณต๊ฐ ์ ๊ทผ์์ค ์ด๋์๋ ์ฐ์ผ ์ ์๋ค. ์ค์ํํธ์ ๊ธฐ๋ณธ ์์๋ ๋ชจ๋ ๊ณต๊ฐ ์ ๊ทผ์์ค์ผ๋ก ๋์ด์๋ค. open : ๊ฐ๋ฐฉ ์ ๊ทผ์์ค ๊ณต๊ฐ ์ ๊ทผ์์ค ์ด์์ผ๋ก ๋์ ์ ๊ทผ ์์ค์ด๋ค. ํด๋์ค์ ํด๋์ค์ ๋ฉค๋ฒ์์๋ง ์ฌ์ฉํ ์ ์๋ค. ๊ณต๊ฐ ์ ๊ทผ์์ค๊ณผ ๊ฐ๋ฐฉ ์ ๊ทผ์์ค์ ์ฐจ์ด์ ๊ฐ๋ฐฉ ์ ๊ทผ์์ค์ ์ ์ธํ ๋ค๋ฅธ ๋ชจ๋ ์ ๊ทผ ์์ค์ ํด๋์ค๋ ๊ทธ ํด๋์ค๊ฐ ์ ์๋ ๋ชจ๋ ์์์๋ง ์์ํ ์ ์๋ค. ๊ฐ๋ฐฉ ์ ๊ทผ์์ค์ ์ ์ธํ ๋ค๋ฅธ ๋ชจ๋ ์ ๊ทผ์์ค์ ํด๋์ค ๋ฉค๋ฒ๋ ํด๋น ๋ฉค๋ฒ๊ฐ ์ ์๋ ๋ชจ๋ ์์์๋ง ์ฌ์ ์ ํ ์ ์๋ค. ๊ฐ๋ฐฉ ์ ๊ทผ์์ค์ ํด๋์ค๋ ๊ทธ..
์ธ์คํด์ค ์์ฑ ๋ฐ ์๋ฉธ ์ธ์คํฐ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ๊ณผ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์๋ฉธํ ๋ ์งํ๋๋ ํ๋ก์ธ์ค์ ๋ํด์.. ์ธ์คํด์ค ์์ฑ ์ด๊ธฐํ ๊ณผ์ = ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ ์ค๋น๋ฅผ ํ๊ธฐ ์ํ์ฌ ์ ์ฅ ํ๋กํผํฐ์ ์ด๊น๊ฐ์ ์ค์ ํ๋ ์ผ ์ด๋์ ๋ผ์ด์ ๋ฅผ ์ ์ํ๋ฉด ์ด๊ธฐํ ๊ณผ์ ์ง์ ๊ตฌํ ๊ฐ๋ฅ ( ์ด๋์ ๋ผ์ด์ ์ ์ญํ ์ ๊ทธ์ ์ธ์คํด์ค์ ์ฒซ ์ฌ์ฉ์ ์ํด ์ด๊ธฐํํ๋ ๊ฒ๋ฟ ) init ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋์ ๋ผ์ด์ ๋งค์๋์์ ํํ ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ์ ๊ธฐ๋ณธ์ ์ธ ํํ์ ์ด๋์ ๋ผ์ด์ Class SomeCLass{ init(){ // ์ด๊ธฐํํ ๋ ํ์ํ ์ฝ๋ } } struct SomeStruct{ init(){ // ์ด๊ธฐํํ ๋ ํ์ํ ์ฝ๋ } } enum SomeEnum{ case someCase init(){ // ์ด๊ฑฐํ์ ์ด..