LLVM front-end debugger ๋๋ฒ๊ฑฐ ๋๊ตฌ๋ค..!@์ฐ๋ฆฌ๊ฐ ์์ฑํ ์ธ์ด๋ฅผ LLVM ํ๋กํ ์ฝ์ ์ค์ํ๋ ๊ณผ์ ์์ ์๊ธฐ๋ ์ด์ฉ๊ตฌ,,์ปดํจํฐ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ๋จ๊ณ ์ค์ ๋ฐ์ํ๋ ์ค๋ฅ๋ ๋ฒ๊ทธ๋ฅผ ์ฐพ์๋ด๊ณ ๊ทธ ์์ธ์ ๋ฐํ๊ณ ์์ ํ๋ ์์ ๊ณผ์ ์ธ์ด โ ์ธ์ด๋ก ์ธ์ฝ๋ฉํ๋ ๊ณผ์ ์
: ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์์ ์์ค ์ฝ๋์ ํน์ ๋ชจ๋์ด ์๋๋ ๋๋ก ์ ํํ ์๋ํ๋์ง ๊ฒ์ฆํ๋ ์ ์ฐจ. ๋ชจ๋ ํจ์์ ๋ฉ์๋์ ๋ํ test case๋ฅผ ์์ฑํ๋ ์ ์ฐจ๋ฅผ ๋งํ๋ค. ํ ์คํธ๋ฅผ ํ๋ค๋ ๊ฒ์ ์์ ์ฑ์ ๋ณด์ฅํ๋ ๊ฒ! ์ ๋ ํ ์คํธ์ ์ฅ์ ํด๋น ๋ฉ์๋์ ๋ํด ๋ ๋ฆฝ์ ์ผ๋ก ํ ์คํธ๋ฅผ
๋ฌธ์ ํด๊ฒฐ์ ์ํ ์ ์ฐจ/ ๋ฐฉ๋ฒ (์ฌ๋ฌ ๋์๋ค์ ๋ชจ์) ex) ํ ํธ๋ฆฌ์ค์ฒ๋ผ ๋ฌธ์ ๋ฅผ ์์ฐจ์ ์ผ๋ก ํด๊ฒฐํด ๋๊ฐ๋ ๋๋, ์ฌํ๊ฐ๋ฐฉ์ ๊พธ๋ฆด ๋, ํ์ํ ๊ฒ์ ์ด๋ค ์์๋๋ก ๋ฃ์์ง ๊ณ ๋ฏผํ๋ ๊ฒ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค ๋ํ์ ์๊ณ ๋ฆฌ์ฆ - ์ ๋ ฌ, ํ์, ์ฌ๊ท ๋ฑ (์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ๋น๊ต์์
Protocol โ ๋ฉ์๋, ํ๋กํผํฐ ๊ทธ๋ฆฌ๊ณ ํน์ ์์ ์ด๋ ๊ธฐ๋ฅ์ ๋ถ๋ถ์ด ์ ํฉํ ๋ค๋ฅธ ์๊ตฌ์ฌํญ์ ์ฒญ์ฌ์ง์ ์ ์ํ๋ค. ํ๋กํ ์ฝ์ ์๊ตฌ์ฌํญ์ ๊ตฌํ์ ์ ๊ณตํ๊ธฐ ์ํด ํด๋์ค, ๊ตฌ์กฐ์ฒด ๋๋ ์ด๊ฑฐํ์ ์ํด ์ฑํ๋ ์ ์๋ค. ํ๋กํ ์ฝ์ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๋ ๋ชจ๋ ํ์ ์ ํ๋กํ ์ฝ์
๋ญ๊ฐ ํฌ๊ด์ ์ด๊ณ ์ผ๋ฐ์ ์ผ ๊ฒ ๊ฐ์ ๋๋์ ๋๋..generic์ Swift์ ๊ฐ๋ ฅํ ๋๊ตฌ์ค ํ๋! Swift ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ถ๋ถ์ Generic์ผ๋ก ์์ฑ๋์ด์๊ณ , Array์ Dictionary๋ Generic ์ปฌ๋ ์ ์ด๋ค.์ฌ๊ธฐ์ T๋ผ๋ ๊ฒ์ Placehorlder
TDD๋ Test Driven Development์ ์ฝ์๋กย ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ด๋ค. ๋ฐ๋ณต ํ ์คํธ๋ฅผ ์ด์ฉํ ์ํํธ์จ์ด ๋ฐฉ๋ฒ๋ก ์ผ๋ก, ์์ ๋จ์์ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ํต๊ณผํ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ์ฌ ๊ตฌํํ๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ง๋ Kent Beck์ TDD๊ฐ
Interface Builder@๋ ์ปดํ์ผ๋ฌ์๊ฒ ์ด๋ค ์์ฑ์ ๊ฐ์ง๊ณ ์๋ค๊ณ ์ ํ๋ ์ญํ ์ ํ๋ ์์ฝ์ด์ปดํ์ผ๋ฌ์๊ฒ @๊ฐ ๋ถ์ ๋ช ๋ น์ด์ ๋ํด ์ด๋ค attribute๊ฐ ๋ถ์ฌ๋์์์ ๋งํ๋ค.@IBAction โ Interface Builder์ ์ฐ๊ฒฐ๋ Action์ด ์๋ค.@UI
: ๊ด๋ จ์๋ ๊ฒ๋ค๋ผ๋ฆฌ ๋ชจ์๋์ ๊ณต๊ฐ?case๊ฐ ์๋ ์ด๊ฑฐํ์ ์ธ์คํด์คํ ๋์ง ์๊ณ ๋ค์์คํ์ด์ค ์ญํ ์ ํ๋ค. ํ์ ํ๋กํผํฐ ์ฌ์ฉ!case๊ฐ ์๋ ์ด๊ฑฐํ์ ์ฌ์ฉํ ๋ ์ฅ์ ์, ๋ปํ์ง ์์ ์ด๊ธฐํ๋ฅผ ๋ง์ ์ ์๊ณ namespace์ ์ญํ ๋ง ํ๋ค๋ ๊ฒ์ด๋ค.์ด๊ฑฐํ์ด๋ ๊ตฌ์กฐ์ฒด๋ฅผ
ํ๋กํผํฐ๋ย ๊ฐ์ ํน์ ํด๋์ค(class), ๊ตฌ์กฐ์ฒด(struct), ์ด๊ฑฐํ(enum)๊ณผ ์ฐ๊ฒฐํ๋ค.Swift์ PropertiesStored Property(์ ์ฅ ํ๋กํผํฐ)Computed Property(์ฐ์ฐ ํ๋กํผํฐ)Type Property(ํ์ ํ๋กํผํฐ)์ ์ฅ ํ๋กํผํฐ๋
๊ตฌ์กฐ์ฒด์ ํด๋์ค์ ๊ณตํต์ ๊ฐ์ ์ ์ฅํ ํ๋กํผํฐ๋ฅผ ์ ์ํ ์ ์๋ค.๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ฉ์๋๋ฅผ ์ ์ํ ์ ์๋ค.subscripts ๋ฌธ๋ฒ์ ํตํด ํ๋กํผํฐ์ ์ ๊ทผํ๋๋ก subscripts๋ฅผ ์ ์ํ ์ ์๋ค.์ด๊ธฐํ ์ํ๋ฅผ ์ค์ ํ๊ธฐ ์ํ ์ด๋์ ๋ผ์ด์ ๋ฅผ ์ ์ํ ์ ์๋ค.๊ธฐ๋ณธ ๊ตฌํ ์ด์
array.shuffle()shuffle()์ ๋ฐฐ์ด์ ์์๋ฅผ ๋๋ค์ผ๋ก ์๋ ํจ์์ด๋ค! ์ง๊ธ ์งํ์ค์ธ ๊ฐ์๋ฐ์๋ณด๊ฒ์ ํ๋ก์ ํธ์์ ๋งค์ง๋๋ฒ ์ฌ์ฉ์ ์ง์ํ๊ณ ์ ๋ฐฉ๋ฒ์ ์ฐพ๋ค๊ฐ array์ 1~3d์ ์ ์๋ฅผ ๋ฃ๊ณ shuffle์ ํตํด ์์๋ฅผ ๋๋คํํ ํ ์์๋ฅผ ๋ฝ์์ ์ฐ๋ ๋ฐฉ๋ฒ
์ด๊ธฐ ์ผ์ด์ค ๊ฐ์ ์ ๊ณตํ๊ธฐ ์ํด initializer๋ฅผ ์ ์ํ ์ ์๋ค.์๋ ๊ตฌํ์ ๋์ด ๊ธฐ๋ฅ์ ํ์ฅํ๋๋ก ํ์ฅ๋ ์ ์๋ค.ํ์ค ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํด ํ๋กํ ์ฝ์ ์ค์ํ ์ ์๋ค.์ด๊ฑฐํ์๋ ๋จ์ํ ์ด๋ฆ์ ์ด๋ค.switch๋ฌธ์ ์ด๊ฑฐํ์ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ ๋ ์ฒ ์ ํด์ผ ํ๋ค.์ด๊ฑฐ