๋งต, ํํฐ, ๋ฆฌ๋์ค ์ค์ํํธ๋ ํจ์๋ฅผ ์ผ๊ธ ๊ฐ์ฒด๋ก ์ทจ๊ธํ๋ค. ๋ฐ๋ผ์ ํจ์๋ฅผ ๋ค๋ฅธ ํจ์์ ์ ๋ฌ์ธ์๋ก ์ฌ์ฉํ ์ ์๋ค. ๋งค๊ฐ๋ณ์๋ก ํจ์๋ฅผ ๊ฐ๋ ํจ์๋ฅผ ๊ณ ์ฐจํจ์๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ, ๋ํ์ ์ธ ๊ณ ์ฐจํจ์๋ก ๋งต, ํํฐ, ๋ฆฌ๋์ค๊ฐ ์๋ค. ๋งต ์์ ์ ํธ์ถํ ๋ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ ํจ์๋ฅผ ์คํํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ๋ฐํํด์ฃผ๋ ํจ์ ์ค์ํํธ์์ ๋งต์ ๋ฐฐ์ด, ๋์ ๋๋ฆฌ, ์ธํธ, ์ต์ ๋ ๋ฑ์์ ์ฌ์ฉํ ์ ์๋ค. ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋๋ฐ ๋ง์ด ์ฌ์ฉํ๋ค. for-in ๊ตฌ๋ฌธ๊ณผ ๋งต ๋ฉ์๋์ ์ฌ์ฉ ๋น๊ต let numbers: [Int] = [0,1,2,3,4] var doubledNumbers: [Int] = [Int]() var strings: [String] = [String]() // for ๊ตฌ๋ฌธ ์ฌ์ฉ for number in numbers..
๐ Dispatch Queue Queue : FIFO ๊ตฌ์กฐ Serial Queue ์ด์ ์์ ์ด ๋๋๋ฉด ๋ค์ ์์ ์ ์์ฐจ์ ์ผ๋ก ์คํํ๋ ์ง๋ ฌ ํํ Concurrent Queue ์ด์ ์์ ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด ์๋, ๋์์ ์คํ๋๋ ๋ณ๋ ฌ ํํ ๐ GCD GCD : Multi Process๋ฅผ ์ํ Thread Programming์ ๋ฐฉ๋ฒ ๊ธฐ์กด์ Thread Programming์ ํ๊ธฐ ์ํด์๋ ๋๊ธฐํ๋ ๊ด๋ฆฌ๋ฅผ ํด์ค์ผํ๊ณ , deadlock๋ ๊ด๋ฆฌ๋ฅผ ํ๋ ๋ฑ ์ค๋ ๋ํ์ ์ง์ ๊ด๋ฆฌํด์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์ง๋ง, ์ ํ์์ ๋ฐ๋ก GCD๋ฅผ ํตํด์ ์ฐ๋ ๋๋ฅผ OS์์ ๊ด๋ฆฌํ๊ณ ๋ถ๋ฐฐํ๊ฒ ๋๋ค. ๋ฐ๋ผ์ Swift์์๋ Thread ๊ด๋ จ ์์ ์ Grand Central Dispatch API ( GCD )๋ฅผ ํตํด ์ฒ๋ฆฌํ๋ค...
์ต์ ๋ ์ฒด์ด๋ ์ต์ ๋์ ์ํด ์๋ nil ์ผ์ง๋ ๋ชจ๋ฅด๋ ํ๋กํผํฐ, ๋ฉ์๋, ์๋ธ์คํฌ๋ฆฝ์ ๋ฑ์ ๊ฐ์ ธ์ค๊ฑฐ๋ ํธ์ถํ ๋ ์ฌ์ฉํ ์ ์๋ ์ผ๋ จ์ ๊ณผ์ . ์ฆ, ์ต์ ๋์ ๋ฐ๋ณต์ฌ์ฉํ์ฌ ์ต์ ๋์ด ์์ ๊ฑฐ ์ฒด์ธ์ฒ๋ผ ์๋ก ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ๊ณ ์๋ ๋ชจ์์ด๊ธฐ ๋๋ฌธ์ ์ต์ ๋ ์ฒด์ด๋์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์์ ๊ฑฐ ์ฒด์ธ์์ ํ ์นธ์ด๋ผ๋ ์๊ฑฐ๋ ๊ณ ์ฅ ๋๋ฉด ์ฒด์ธ ์ ์ฒด๊ฐ ๋์ํ์ง ์๋ฏ์ด ์ค์ฒฉ๋ ์ต์ ๋ ์ค ํ๋๋ผ๋ ๊ฐ์ด ์กด์ฌํ์ง ์๋๋ค๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก nil ๋ฐํ ์ต์ ๋ ์ฒด์ด๋์ ํ๋กํผํฐ๋ ๋ฉ์๋ ๋๋ ์๋ธ์คํฌ๋ฆฝํธ๋ฅผ ํธ์ถํ๊ณ ์ถ์ ์ต์ ๋ ๋ณ์๋ ์์ ๋ค์ ๋ฌผ์ํ(?)๋ฅผ ๋ถ์ฌ ํํํ๋ค. ์ต์ ๋์ด nil์ด ์๋๋ผ๋ฉด ์ ์์ ์ผ๋ก ํธ์ถ๋ ๊ฒ์ด๊ณ , nil์ด๋ผ๋ฉด ๊ฒฐ๊ด๊ฐ์ผ๋ก nil์ ๋ฐํํ ๊ฒ์ด๋ค. ! ( ๋๋ํ ) ๋ฌผ์ํ ๋์ ์ ๋๋ํ๋ฅผ ์ฌ์ฉํ ์๋์๋๋ฐ, ์ด๋ ์ต์ ๋์..
ํด๋ก์ ํด๋ก์ ๋ ์ฌ์ฉ์์ ์ฝ๋ ์์์ ์ ๋ฌ๋์ด ์ฌ์ฉํ ์ ์๋ ๋ก์ง์ ๊ฐ์ง ์ค๊ดํธ{} ๊ตฌ๋ถ๋ ์ฝ๋์ ๋ธ๋ญ์ด๋ค. ์ฝ๊ฒ ๋งํ๋ฉด '์ด๋ฆ์ด ์๋ ํจ์'์ด๋ค. ๋ฐ๋ผ์ ํจ์๋ ์ด๋ฆ์ด ์๋ ํด๋ก์ ๋ผ๊ณ ํ ์ ์๋ค. ํด๋ก์ ๋ ๋ณ์๋ ์์๊ฐ ์ ์ธ๋ ์์น์์ ์ฐธ์กฐ๋ฅผ ํ๋ํ๊ณ ์ ์ฅํ ์ ์๋ค. ๐ก ํด๋ก์ ์ 3๊ฐ์ง ํํ ์ด๋ฆ์ด ์์ผ๋ฉด์ ์ด๋ค ๊ฐ๋ ํ๋ํ์ง ์์ ์ ์ญํจ์์ ํํ ์ด๋ฆ์ด ์์ผ๋ฉด์ ๋ค๋ฅธ ํจ์ ๋ด๋ถ์ ๊ฐ์ ํ๋ํ ์ ์๋ ์ค์ฒฉ๋ ํจ์์ ํํ ์ด๋ฆ์ด ์๊ณ ์ฃผ๋ณ ๋ฌธ๋งฅ์ ๋ฐ๋ผ ๊ฐ์ ํ๋ํ ์ ์๋ ์ถ์ฝ ๋ฌธ๋ฒ์ผ๋ก ์์ฑํ ํํ ๐ก ํด๋ก์ ์ ๋ค์ํ ํํ ํด๋ก์ ๋ ๋งค๊ฐ๋ณ์์ ๋ฐํ ๊ฐ์ ํ์ ์ ๋ฌธ๋งฅ์ ํตํด ์ ์ถํ ์ ์๊ธฐ ๋๋ฌธ์ ๋งค๊ฐ๋ณ์์ ๋ฐํ ๊ฐ์ ํ์ ์ ์๋ตํ ์ ์๋ค. ํด๋ก์ ์ ๋จ ํ์ค์ ํํ๋ง ๋ค์ด์๋ค๋ฉด ์์์ ์ผ๋ก ์ด๋ฅผ ๋ฐ..
์ ๊ทผ์ ์ด ์ ๊ทผ์ ์ด = ์๋ํ ์ ๊ทผ์ ์ด๋ฅผ ํตํด ์์ธ ๊ตฌํ์ ์จ๊ธฐ๊ณ ํ์ฉ๋ ๊ธฐ๋ฅ๋ง ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค. ์ ๊ทผ์ ์ด์ ํ์์ฑ ์ธ๋ถ์์ ๋ณด๊ฑฐ๋ ์ ๊ทผํ๋ฉด ์๋๋ ์ฝ๋๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ ๊ทผ์์ค public : ๊ณต๊ฐ ์ ๊ทผ์์ค ์ด๋์๋ ์ฐ์ผ ์ ์๋ค. ์ค์ํํธ์ ๊ธฐ๋ณธ ์์๋ ๋ชจ๋ ๊ณต๊ฐ ์ ๊ทผ์์ค์ผ๋ก ๋์ด์๋ค. open : ๊ฐ๋ฐฉ ์ ๊ทผ์์ค ๊ณต๊ฐ ์ ๊ทผ์์ค ์ด์์ผ๋ก ๋์ ์ ๊ทผ ์์ค์ด๋ค. ํด๋์ค์ ํด๋์ค์ ๋ฉค๋ฒ์์๋ง ์ฌ์ฉํ ์ ์๋ค. ๊ณต๊ฐ ์ ๊ทผ์์ค๊ณผ ๊ฐ๋ฐฉ ์ ๊ทผ์์ค์ ์ฐจ์ด์ ๊ฐ๋ฐฉ ์ ๊ทผ์์ค์ ์ ์ธํ ๋ค๋ฅธ ๋ชจ๋ ์ ๊ทผ ์์ค์ ํด๋์ค๋ ๊ทธ ํด๋์ค๊ฐ ์ ์๋ ๋ชจ๋ ์์์๋ง ์์ํ ์ ์๋ค. ๊ฐ๋ฐฉ ์ ๊ทผ์์ค์ ์ ์ธํ ๋ค๋ฅธ ๋ชจ๋ ์ ๊ทผ์์ค์ ํด๋์ค ๋ฉค๋ฒ๋ ํด๋น ๋ฉค๋ฒ๊ฐ ์ ์๋ ๋ชจ๋ ์์์๋ง ์ฌ์ ์ ํ ์ ์๋ค. ๊ฐ๋ฐฉ ์ ๊ทผ์์ค์ ํด๋์ค๋ ๊ทธ..
์ธ์คํด์ค ์์ฑ ๋ฐ ์๋ฉธ ์ธ์คํฐ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ๊ณผ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์๋ฉธํ ๋ ์งํ๋๋ ํ๋ก์ธ์ค์ ๋ํด์.. ์ธ์คํด์ค ์์ฑ ์ด๊ธฐํ ๊ณผ์ = ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ ์ค๋น๋ฅผ ํ๊ธฐ ์ํ์ฌ ์ ์ฅ ํ๋กํผํฐ์ ์ด๊น๊ฐ์ ์ค์ ํ๋ ์ผ ์ด๋์ ๋ผ์ด์ ๋ฅผ ์ ์ํ๋ฉด ์ด๊ธฐํ ๊ณผ์ ์ง์ ๊ตฌํ ๊ฐ๋ฅ ( ์ด๋์ ๋ผ์ด์ ์ ์ญํ ์ ๊ทธ์ ์ธ์คํด์ค์ ์ฒซ ์ฌ์ฉ์ ์ํด ์ด๊ธฐํํ๋ ๊ฒ๋ฟ ) init ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋์ ๋ผ์ด์ ๋งค์๋์์ ํํ ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ์ ๊ธฐ๋ณธ์ ์ธ ํํ์ ์ด๋์ ๋ผ์ด์ Class SomeCLass{ init(){ // ์ด๊ธฐํํ ๋ ํ์ํ ์ฝ๋ } } struct SomeStruct{ init(){ // ์ด๊ธฐํํ ๋ ํ์ํ ์ฝ๋ } } enum SomeEnum{ case someCase init(){ // ์ด๊ฑฐํ์ ์ด..
๐ํ๋กํผํฐ์ ๋ฉ์๋ ํ๋กํผํฐ : ํด๋์ค, ๊ตฌ์กฐ์ฒด ๋๋ ์ด๊ฑฐํ ๋ฑ์ ๊ด๋ จ๋ ๊ฐ ๋ฉ์๋ : ํน์ ํ์ ์ ๊ด๋ จ๋ ํ์ ๐ ํ๋กํผํฐ ์ ์ฅ ํ๋กํผํฐ : ์ธ์คํด์ค์ ๋ณ์ ๋๋ ์์ ์ฐ์ฐ ํ๋กํผํฐ : ๊ฐ์ ์ ์ฅํ ๊ฒ์ด ์๋๋ผ ํน์ ์ฐ์ฐ์ ์คํํ ๊ฒฐ๊ณผ๊ฐ ( ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ์ ์ฌ์ฉ ) ํ์ ํ๋กํํฐ : ํน์ ํ์ ์ ์ฌ์ฉ๋๋ ํ๋กํผํฐ ( ํด๋์ค ๋ณ์ ) ํ๋กํผํฐ ๊ฐ์์ = ํ๋กํผํฐ์ ๊ฐ์ด ๋ณํ๋ ๊ฒ์ ๊ฐ์ ( ๊ฐ์ด ๋ณํ ๋ ๊ฐ์ ๋ณํ์ ๋ฐ๋ฅธ ํน์ ์์ ์คํ ) ๐ ์ ์ฅ ํ๋กํผํฐ ํด๋์ค ๋๋ ๊ตฌ์กฐ์ฒด์ ์ธ์คํด์ค์ ์ฐ๊ด๋ ๊ฐ์ ์ ์ฅํ๋ ๊ฐ์ฅ ๋จ์ํ ๊ฐ๋ ์ ํ๋กํผํฐ var ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ์ ์ ์ฅ ํ๋กํผํฐ let ์ ์ฌ์ฉํ๋ฉด ์์ ์ ์ฅ ํ๋กํผํฐ ๐ ๊ตฌ์กฐ์ฒด์ ํด๋์ค์ ์ ์ฅ ํ๋กํผํฐ ๊ตฌ์กฐ์ฒด์ ์ ์ฅ ํ๋กํผํฐ๊ฐ ์ต์ ๋์ด ์๋๋๋ผ..
๊ตฌ์กฐ์ฒด์ ํด๋์ค ๊ตฌ์กฐ์ฒด์ ํด๋์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฉ๋์ ๋ง๊ฒ ๋ฌถ์ด ํํํ๊ณ ์ ํ ๋ ์ ์ฉํ๋ค. ๊ตฌ์กฐ์ฒด์ ์ธ์คํด์ค = ๊ฐ ํ์ ํด๋์ค์ ์ธ์คํด์ค = ์ฐธ์กฐ ํ์ ๊ตฌ์กฐ์ฒด ๊ตฌ์กฐ์ฒด์ ์ ์ struct ํค์๋๋ก ์ ์ struct ๊ตฌ์กฐ์ฒด ์ด๋ฆ{ ํ๋กํผํฐ์ ๋ฉ์๋๋ค } BaicInformation ๊ตฌ์กฐ์ฒด ์ ์ struct BasicInformation{ var name: String var age: Int } ๊ตฌ์กฐ์ฒด ์ธ์คํด์ค์ ์์ฑ ๋ฐ ์ด๊ธฐํ ๊ตฌ์กฐ์ฒด ์ ์๋ฅผ ๋ง์น ํ, ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ์ด๊ธฐํํ๊ณ ์ ํ ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋๋ ๋ฉค๋ฒ์์ด์ฆ ์ด๋์ ๋ผ์ด์ฆ๋ฅผ ์ฌ์ฉ ์ธ์คํด์ค๊ฐ ์์ฑ๋๊ณ ์ด๊ธฐํ๋ ํ ํ๋กํผํฐ ๊ฐ์ ์ ๊ทผํ๊ณ ์ถ๋ค๋ฉด ๋ง์นจํ . ์ฌ์ฉ ๊ตฌ์กฐ์ฒด๋ฅผ ์์ let์ผ๋ก ์ ์ธํ๋ฉด ์ธ์คํด์ค ๋ด๋ถ์ ํ๋กํผํฐ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๊ณ , ๋ณ์ v..