์๋ ํ์ธ์?๋๊ตฌ๋ฆฌ์ ๋๋ค. ์ ๋ฒ ํฌ์คํ ์์ Xcode Build System์ ๋ํ ๊ธ์ ์ผ๋๋ฐ,๋ง์ปค์ ๋ํด ์กฐ๊ธ๋ง ๋ ์์ธํ ๊ณต๋ถํด๋ณด๋ ค ์์๋ณด๋์ค WWDC22์ ๋งํน์ ๋ํ ์์์ด ์์ด ์ ๋ฆฌํด๋ณด๋ ค ํฉ๋๋ค.๊ฐ๋ณด์์ฃ ๋ชฉ์ ํ์ผ์ด๋ ๋ฌด์์ธ๊ฐ?(์ฌ์ ์ง์)๋จผ์ ์๊ณ ๊ฐ์ผํ ๋ด์ฉ์ด ์๋๋ฐ ๋ฐ๋ก ๋ชฉ์ ํ์ผ ์ ๋๋ค.๋ชฉ์ ํ์ผ์ ์ปดํ์ผ๋ฌ๋ ์ด์๋ธ๋ฌ์์ ์์ค์ฝ๋๋ฅผ ์ปดํ์ผ์ด๋ ์ด์ ๋ธํด์ ์์ฑํ๋ ํ์ผ์ด๋ค.์ ๋ฒ ํฌ์คํ Xcode Build System์์ ํด๋น ๋จ๊ณ์์ Mach-Oํ์ผ์ ์์ฑํ๋ค๊ณ ํ๋๋ฐ๊ทธ๊ฒ ๋ฐ๋ก ๋ชฉ์ ํ์ผ ์ค ํ๋์ ๋๋ค. Linker๋? ๋ง์ปค๋ ๋ชฉ์ ํ์ผ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ํฉ์ณ ์คํ ํ์ผ๋ก ๋ง๋๋ ์ญํ ์ ํ๊ณ ์ด ๊ณผ์ ์ ๋งํน์ด๋ผ๊ณ ํฉ๋๋ค. ์ด ๊ณผ์ ์ 2๊ฐ์ ์ข ๋ฅ๋ก ๋๋ ์ ์์ต๋๋ค. Static Linking(..
์๋ ํ์ธ์?๋๊ตฌ๋ฆฌ์ ๋๋ค. ์์ฆ build ๊ด๋ จ๋ ๋ถ๋ถ์ ๋ํด ๊ณต๋ถ๋ฅผ ํ๊ณ ์๋๋ฐ์.๋ชจ๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ๊ณต๋ถํ๊ธฐ ์ ์ ๋ฒ ์ด์ค ๋ด์ฉ์ธ๊ฒ๊ฐ์ ๊ด์ฌ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ต๊ทผ์ ์ฝ๊ณ ๊ณต๋ถํUnderstanding Xcode Build System์ ๋ฒ์ญํด๋ณด๋ ค ํฉ๋๋ค. Problem Statement๋ชจ๋ ์ปดํจํฐ ์์คํ ์ ์ํํธ์จ์ด์ ํ๋์จ์ด๋ผ๋ ๋ ๊ฐ์ง ์ธก๋ฉด์ ๊ฐ์ง๊ณ ์์ต๋๋ค.ํ๋์จ์ด๋ ๋ชจ๋ํฐ๋ ํค๋ณด๋์ฒ๋ผ ์ปดํจํฐ์ ๋ฌผ๋ฆฌ์ ๋ถ๋ถ์ ์๋ฏธํฉ๋๋ค. ํ๋์จ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ํํธ์จ์ด์ ์ํด ์ ์ด๋๋ฉฐ, ์ํํธ์จ์ด๋ ํ๋์จ์ด๊ฐ ์๋ํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ๋ ๋ช ๋ น์ด ๋ชจ์์ ๋๋ค. ์ํํธ์จ์ด๊ฐ ํ๋ก์ธ์ค๋ฅผ ์กฐ์จํ๊ณ ํ๋์จ์ด๊ฐ ์ค์ ์์ ์ ์ํํ๊ธฐ ๋๋ฌธ์, ์ด ๋ ์ค ์ด๋ ๊ฒ๋ ๋จ๋ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ํํธ์จ์ด ์์ง๋์ด๋ก์ ์ฐ๋ฆฌ์..
์๋ ํ์ธ์?๋๊ตฌ๋ฆฌ์ ๋๋ค. ์ ๋ฒ ํฌ์คํ ์ ์ฐ์ฅ์ ์ผ๋ก build configuration file์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. # Build SettingsBuild Settings๋ ์ ๋ฒ ์๊ฐ์ ๋น๋ ์ค์ ์ ํน์ ์ ํ์ ๋น๋ ํ๋ก์ธ์ค์ ํน์ ์ธก๋ฉด์ด ์ด๋ป๊ฒ ์ํ๋์ด์ผ ํ๋์ง๋ฅผ ์ง์ ํ๋ ๋ณ์๋ฅผ ์๋ฏธ๋ก ์ค๋ช ๋๋ ธ์ต๋๋ค. ์ง๊ธ๊น์ง ์ ํฌ๋ ์์ฐ์ค๋ฝ๊ฒ ์ค์ ๋ณ์๋ฅผ ๋ฐ๊พธ๊ธฐ ์ํด์Xcode๋ฅผ ์ด๊ณ Build Settings ์น์ ์ผ๋ก ๊ฐ ๋ค ์ค์ ์ ๋ฐ๊พธ๊ณค ํ์์ฃ ! ๊ทธ๋ฐ๋ฐ ๊ฐ์ ์์ ํ ๋ค git ์์ ๋ด์ญ์ ๋ณด๋ฉด ํ๋ก์ ํธ ํ์ผ์ด ๋ณ๊ฒฝ๋์ด ์์ต๋๋ค.setting ๊ฐ๋ค์ ํ๋ก์ ํธ ํ์ผ์์ ๊ด๋ฆฌํ๋๋ฐ์ฝ๋ ๋ฆฌ๋ทฐํ ๋๋ ์์ ๋ด์ญ์ ์ดํด๋ณผ ๋ ์ฐพ๊ธฐ ํ๋ค๋ค๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.setting๊ฐ๋ค์ ๋งค์ฐ ์ค์ํ๋ฐ ๋ง์ด์ฃ !! ๊ทธ๋์ ์ด๊ฒ๋ค..
์๋ ํ์ธ์?๋๊ตฌ๋ฆฌ์ ๋๋ค! Xcode์์ ์ ํฌ๊ฐ ์์ฃผ ์ ํ๊ฒ ๋๋ ์ค์ ๊ฐ๋ค์ด ์๋๋ฐํด๋น ์ค์ ๊ฐ์ ๋ํด ๋ค์ ๊ณต๋ถํ๊ณ ์ ๋ฆฌํด๋ณด๋ ค ํฉ๋๋ค.๊ณ ๋ผ ๋ ์ธ ๊ณ # Project๋?file, resources, ํ๋ ์ด์์ ์ ํ์ ๋น๋ํ๊ธฐ ์ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๋ ์ ์ฅ์์ ๋๋ค. ํ๋ก์ ํธ๋ ์ ํ์ ๋น๋ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ชจ๋ ์์์ ๊ทธ ์์๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ํ๋ก์ ํธ์๋ ์ ํ์ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ ํ๋ ์ด์์ ํ๊ฒ(target)์ด ํฌํจ๋์ด ์์ต๋๋ค. ๋ํ, ํ๋ก์ ํธ๋ ํ๋ก์ ํธ ๋ด ๋ชจ๋ ํ๊ฒ์ ๋ํ ๊ธฐ๋ณธ ๋น๋ ์ค์ ์ ์ ์ํ๋ฉฐ, ๊ฐ ํ๊ฒ์ ํ๋ก์ ํธ ์ค์ ์ ์ฌ์ ์ํ ์ ์๋ ์์ฒด ๋น๋ ์ค์ ์ ์ง์ ํ ์๋ ์์ต๋๋ค. ํ๋ก์ ํธ์๋ ์๋์ ๊ฐ์ ์ ๋ณด๋ค์ด ํฌํจ๋ฉ๋๋ค.์์ค ํ์ผ์ ๋ํ ์ฐธ์กฐ์์ค ์ฝ๋(ํค๋ ํ์ผ๊ณผ ๊ตฌํ ํ์ผ ํฌํจ)..
์๋ ํ์ธ์?๋๊ตฌ๋ฆฌ์ ๋๋ค. ์ ๋ฒ ํฌ์คํ ์ ์ด์ด์ด๋ฒ์๋ keychain์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. Keychain Service๋?ํค์ฒด์ธ ์๋น์ค๋ ํค์ฒด์ธ์ด๋ผ๋ ์ํธํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ ์ฅํ ์ ์๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค.ํค์ฒด์ธ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ฑ์ ์ญ์ ํ๋๋ผ๋ ์๊ตฌ์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋จ๊ฒ ๋ฉ๋๋ค. ๋น๋ฐ๋ฒํธ, cryptographic keys ๋ฑ ์ฌ์ฉ์๊ฐ ์ค์ํ๊ฒ ์๊ฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ ์ฅํ ์ ์๋๋ก ๋์์ค๋๋ค. Keychain Itemํค์ฒด์ธ์ ์ ์ฅํ๋ ค๋ฉด ์ ์ฅํ ์ ์๋ ํํ๋ก ๋ฐ๊ฟ์ฃผ์ด์ผ ํ๋๋ฐ,๊ทธ ํํ๋ฅผ Keychain Item์ด๋ผ๊ณ ํฉ๋๋ค. ์์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด Data์ ํจ๊ป Attributes๋ ํจ๊ป ์ ์ฅ ๋๋๋ฐ๋ฐ์ดํฐ์ ์ ๊ทผ์ฑ์ ๊ด๋ฆฌํ๊ณ ๊ฒ์ํ ์ ์๋๋ก ํ๋ ์ญํ ์ ํฉ๋..
์๋ ํ์ธ์?๋๊ตฌ๋ฆฌ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ ์๋ ์ฑ ๋ด๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ธUserDefaults์ ๋ํด ์์ธํ ์์๋ณด๋ ค ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ณด๋ค ๋์ ๋ฐฉ์ ์์ฃผ๋ก ํ์ธํด๋ณผ๊ฒ์!UserDefaults ๊ณต์ ๋ฌธ์๋ฅผ ์ดํด๋ณด๋ฉด ์ฌ์ฉ์์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ ์ ์๋ ์ธํฐํ์ด์ค์ด๋ฉฐ, key-value ํํ๋ก ๊ฐ์ ์ ์ฅํ๊ณ ์ฑ ์์๋๋ง๋ค ์ ์ง๋๋ค๊ณ ํฉ๋๋ค. ํน์ง์ ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค.๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ๋ ๋งค๋ฒ Database์ ์ ๊ทผํ๋ ๊ฒ์ด ์๋๋ผ ์บ์ฑํ๊ณ ์์ผ๋ฏ๋ก ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๋ถ๋ฌ์ฌ ์ ์๋ค.๊ฐ์ ์ค์ ํ๋ฉด ๋๊ธฐ์ ์ผ๋ก ๋ฐ์๋ฉ๋๋ค.๊ฐ์ ์ด๋ป๊ฒ ์ ์ฅ๋๋๊ฐ?UserDefaults๋ ๋ด๋ถ์ ์ผ๋ก property list๋ก ์ ์ฅ๋ฉ๋๋ค.์ค๋ ๋ ์ธ์ดํ ํ๋ฉฐ,๊ฐ์ ํ๋ก์ธ์ค์ผ ๊ฒฝ์ฐ ๋๊ธฐ์ ์ผ๋ก ์ ์ฅ๋๋ฉฐ,๋ค๋ฅธ ํ๋ก์ธ..
์๋ ํ์ธ์? ๋๊ตฌ๋ฆฌ์ ๋๋ค. test code์์ F.I.R.S.T ์์น์ค์ ํ๋๋ Independent - ํ ์คํธ๋ ๋ ๋ฆฝ์ ์ด์ฌ์ผ ํ๋ฉฐ ์์กดํ์ง ์์์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ํด ์ค์ ๋ก ๋ง์ด ์์ฑํ๋ ์ฝ๋๋ network๋ฅผ ํตํด request๋ฅผ ํ๊ณ ๊ทธ์ ๋ฐ๋ฅธ response๋ฅผ ๋ฐ๋๋ก ์์ฑํ ์ฝ๋์ ๋๋ค. ์ฌ๊ธฐ์ networkํต์ ์ ์ธ๋ถ์ ์์ญ์ผ๋ก ๋๋๊ฒ ๋์ด ํ ์คํธ ์ ๋ถ๋ฆฌํ์ฌ์ผ ํ๋ ์์ญ์ ๋๋ค. test code์์ ์ค์ ๋ก network ํต์ ์ ํ๊ฒ ๋๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์ค์ ๋ก ํธ์ถ๋๋ค ๋ณด๋ ์๊ฐ์ด ์์๋์ด ํ ์คํธ ์คํ ์๊ฐ์ด ๊ธธ์ด์ง๊ณ , ํ ์คํธ๊ฐ ์คํจํ ์๋ ์์ผ๋ฉฐ, ์๋ชป๋ request๋ก ์๋ฒ์ ์ ํจํ์ง ์์ ๋ฐ์ดํฐ๊ฐ ์์ผ ์ ์์ต๋๋ค. ๊ทธ๋์ test code์์ ๋ถ๋ฆฌํ๊ณ , ๊ธฐ๋ฅ ์ฝ๋์..
์๋ ํ์ธ์? ๋๊ตฌ๋ฆฌ ์ ๋๋ค. ํ ์คํธ ์ฝ๋์์ Stub, Mock ๋ฑ ์ด๋ฐ ๋จ์ด๋ค์ ์์ฃผ ๋ณด์ จ์ ํ ๋ฐ์. ๊ทธ๋ฅ ๋๋ฏธ ๋ฐ์ดํฐ์ธ๊ฐ? ์ด๋ ๊ฒ ์๊ฐํ๊ณ ๋์ด๊ฐ์๋ ์์ง๋ง ์ฉ์ด ์ ๋ฆฌ๋ฅผ ํ๊ณ ๊ณต๋ถํ๊ณ ์ ํฉ๋๋ค Test Double์ด๋? test double์ ๋ฌด์์ผ๊น? ํ ์คํธ๋ฅผ ๋๋ฒ ํ๋ค๋ ๋ป์ผ๊น? ์ด ๋ป์ ์์๋ณด๊ธฐ ์ํด ์ ์ ์ฃผ์ ๋ฅผ ์ํ๋ก ์ฎ๊ฒจ๋ณผ๊ฒ์. ์ํ ์ดฌ์์ฅ์์ stunt double์ด๋ผ๋ ์ฉ์ด๊ฐ ์์ต๋๋ค. stunt double์ stunt man๊ณผ ๋น์ทํ๊ฒ ๋ฐฐ์ฐ์ ๋น์ทํ ์ฒด๊ฒฉ, ์ธ๋ชจ, ํน์ง์ ๊ฐ์ง๊ณ ์์ผ๋ฉด์ ์ํํ ์ฌ์ ๋์ ์ดฌ์ํ๋ ์ฌ๋์ ๋งํ๋๋ฐ์. ๊ทธ๋ ๋ค๋ฉด test double์ ์ค์ ๋ก ์๋ ์ฝ๋๋ก ํ ์คํธ๋ฅผ ํ๋๊ฒ ์๋๋ผ ์ค์ ๋ก ๋์ํ๋ ์ฝ๋์ ๋น์ทํ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉด์ ํ ์คํธ๋ฅผ ์งํํ๋๋ก ๋๋ ..
Unit Test๋ unit test๋ ๋ฌด์์๊น์? ์ํค๋ฐฑ๊ณผ๋ฅผ ํตํด ์ฐพ์๋ณด๋ฉด ์ด๋ ๊ฒ ์ค๋ช ํ๊ณ ์์ต๋๋ค. ์ ๋ ํ ์คํธ(unit test)๋ ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์์ ์์ค ์ฝ๋์ ํน์ ๋ชจ๋์ด ์๋๋ ๋๋ก ์ ํํ ์๋ํ๋์ง ๊ฒ์ฆํ๋ ์ ์ฐจ๋ค. ์ฆ, ๋ชจ๋ ํจ์์ ๋ฉ์๋์ ๋ํ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ ์ ์ฐจ๋ฅผ ๋งํ๋ค. ์ด๋ฅผ ํตํด์ ์ธ์ ๋ผ๋ ์ฝ๋ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, ๋จ์๊ฐ ๋ด์ ์ด๋ฅผ ํ์ ํ๊ณ ๋ฐ๋ก ์ก์ ์ ์๋๋ก ํด์ค๋ค. ์ด์์ ์ผ๋ก, ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ์๋ก ๋ถ๋ฆฌ๋์ด์ผ ํ๋ค. ์ด๋ฅผ ์ํด ๊ฐ์ง ๊ฐ์ฒด(Mock object)๋ฅผ ์์ฑํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด๋ค. ์ ๋ ํ ์คํธ๋ (์ผ๋ฐ์ ์ธ ํ ์คํธ์ ๋ฌ๋ฆฌ) ๊ฐ๋ฐ์(developer) ๋ฟ๋ง ์๋๋ผ ๋ณด๋ค ๋ ์ฌ๋์๋ ํ ์คํธ๋ฅผ ์ํด ํ ์คํฐ(tester)์ ์ํด ์ํ๋๊ธฐ๋ ํ..
์๋ ํ์ธ์? ๋๊ตฌ๋ฆฌ์ ๋๋ค. ์์ฆ ํ ์คํธ๋ผ๋ ์ฃผ์ ์ ๋น ์ ธ์์ต๋๋ค. ๊ธฐํ์์ ๋ฐ๊ณ ์ฒ์ ๊ฐ๋ฐ์ ํ ๋๋ ๋ชจ๋ ์ผ์ด์ค์ ๋ํด ๊ณ ๋ คํ๋ฉด ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ํ์ง๋ง ๊ธํ๊ฒ ์์ ํ๊ฑฐ๋ ์์ ํ์ง ์ค๋๋ ์ฝ๋๋ฅผ ์์ ํ๋ค ๋ณด๋ฉด ์์์น ๋ชปํ๊ฒ ์ฌ์ด๋ ์ดํํธ๊ฐ ๋๊ธฐ ๋ง๋ จ์ ๋๋ค. ์์ฆ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ์์ฑํด์ผ ํ ๊น ๊ณ ๋ฏผํ๋ ์ค ์ค๋ฅ๋ฅผ ์ค์ด๊ณ ์ถํ ์์ ํ๋๋ผ๋ ์ด๋ฐ ์ฌ์ด๋ ์ดํํธ๋ฅผ ์ก์๋ด๋ ์ฝ๋๋ฅผ ์์ฑํด๊ฒ ๋ค ์๊ฐ์ด ๋ค์์ต๋๋ค. ๊ทธ๋์ ๊ธฐ๋ฅ ๊ตฌํ์ ๋ฐ๋ ค๋ ์๋ Test Code์ ๋ํด ๊ด์ฌ์ด ์๊ฒผ๊ณ TDD์ ๋ํด ๊ณต๋ถํด๋ณด๊ณ ์ ํฉ๋๋ค. TDD(Test - Driven Development) ๋? TDD๋ Test-Driven-Development, ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ ๋๋ค. ๋งค์ฐ ์งง์ ๊ฐ๋ฐ ์ฌ์ดํด์ ๋ฐ๋ณตํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ค ํ๋..
- Total
- Today
- Yesterday
- ์คํ ๋ ์ด์์
- test
- swift
- ์ค์ํํธ ๊ณต๋ถ
- swift ํ๋กํ ์ฝ
- ๊ณต๋ถ
- set
- autolayout
- ์ค์ํํธ map
- Clean
- RxSwift
- xcode
- network
- Unit Test
- observable
- swift ๊ณต๋ถ
- ํ๋กํ ์ฝ
- Property
- Protocol
- func
- XCTest
- ์ค์ํํธ
- URLSession
- ํ ์คํธ
- swift urlsession
- RX
- ํ๋กํผํฐ
- ios
- ์ค์ํํธ ํ๋กํ ์ฝ
- Swift Network
| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |