https://noah-ios.dev ๋ก ๋ธ๋ก๊ทธ๋ฅผ ์ด์ ํ์์ต๋๋ค. Swift, ๊ฐ๋ฐ, ๊ฒฝํ๊ณผ ๊ด๋ จ๋ ์ด์ผ๊ธฐ๋ฅผ ํ ์์ ์ ๋๋ค. ๋ง์ ๊ด์ฌ ๋ถํ๋๋ฆฝ๋๋ค ๊ฐ์ฌํฉ๋๋ค ๐โโ๏ธ๐
์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค๋ณ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ์ดํดํ๊ธฐ ์ํ ํ์ต์ ์ผํ์ผ๋ก Apple์ ๊ณผ๊ฑฐ Macintosh Operating System์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ชจ๋ธ์ ํ๋ ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ชจ๋ธ๊ณผ ๋น๊ตํด๊ฐ๋ฉฐ, stack, heap, text, ๊ธ๋ก๋ฒ ๋ณ์ GVAR, BSS์ ์ญํ ์ ๋ํด ์ ๋ฆฌํด๋ณด์. Inside Macintosh: Memory Clasโฆ
WWDC 2016 UnderStanding Swift Performance์ ๋ณด๊ณ ๋ ํ์ ์๋ชป ์ดํดํ๊ณ ์๋ ๋ถ๋ถ(๋ถ๋๋ฝ์ง๋ง Value Type์ ๋ฌด์กฐ๊ฑด Stack์๋ง ํ ๋น๋๋ ๊ฒ์ผ๋ก ์๊ณ ์์์ต๋๋ค.)์ ๋ฐ๋ก ์ก๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ๋งต์ ํ์ธํด๋ณด๋ฉฐ Value Type์ด ๋ฌด์กฐ๊ฑด Stack์๋ง ํ ๋น๋๋ ๊ฒ์ด ์๋์ ์ ๋ฒ ํฌ์คํธ๋ฅผ ํตํด ์กฐ์ฌํด๋ณด์์ต๋๋ค. ์ง๋๋ฒ โฆ
WWDC 2016 UnderStanding Swift Performance ์ธ์ ์ ๋ณด๊ณ ์๋ชป ์ดํดํ๊ณ ์๋ ๋ถ๋ถ์ ๋ฐ๋ก ์ก๊ธฐ์ํด ์คํ์ ํตํด ๋ค์ ํ์ด๋ณด์์ต๋๋ค. ์ ์ธ์ ์ ์๋์ ํฌ์คํธ๋ฅผ ํตํด ์ ๋ฆฌํด๋ณด์์ต๋๋ค. ๊ด์ฌ์๋ ๋ถ๋ค์ ์๋์ ๋งํฌ๋ฅผ ์ฐธ์กฐํด์ฃผ์ธ์! Swift ์ฑ๋ฅ ์ดํดํ๊ธฐ struct-class ๋ํ Value Type์ด ์ ๋ง Stack์๋ง ํ ๋นโฆ
ํด๋ก์ ธ์์ self๋ฅผ ์บก์ณํ ๋ ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์ํ ์ฐธ์กฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฝํ ์ฐธ์กฐ๋ก ํด๋ก์ ธ ๋ด๋ถ์์ ํด๋น ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ ๋ ์ ๋๋ค. ํด๋ก์ ธ์์ ์ฝํ ์ฐธ์กฐ๋ฅผ ์ด์ฉํด ํน์ ์ธ์คํด์ค๋ฅผ ์บก์ณํ์ง ์์ผ๋ฉด (์ฌ๊ธฐ์๋ self๋ฅผ ์บก์ณํ๋ค๊ณ ๊ฐ์ ) self๊ฐ ํด์ ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ณ self๋ ํด๋ก์ ธ๊ฐ ํด์ ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ strong referenโฆ
์ฌ๋ฌ๋ถ ์๋ ํ์ธ์! Noah์ ๋๋ค. ํน์ Git์ ์ฌ์ฉํ๋ฉด์ commit id๋ฅผ ๋ณด์ ์ ์ด ์๋์? ์ฐ๋ฆฌ๋ commit id๋ก ํน์ ๋ฒ์ ์ ๊ฐ๋ฆฌ์ผ commit์ ๋๋๋ฆฌ๊ธฐ๋ ํ๊ณ , ํน์ commit์ ๋ณ๊ฒฝ์ฌํญ์ ๋๋๋ฆฌ๊ธฐ๋ ํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด commit id๋ ์ด๋ป๊ฒ ํด์ ๋ง๋ค์ด์ง๋ ๊ฑธ๊น์? Q. ์๋ฒ์์ ๊ณ ์ ํ id๋ฅผ ๋ถ์ฌํด์ฃผ๋์..?๐ง A. Git์ โฆ
์๋ ํ์ธ์ Noah์ ๋๋ค :) ์ค๋์ Swift์ ์๋ฃ๊ตฌ์กฐ ์ค ๋ฐฐ์ด์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค๐ ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฐ์๋์ด์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ๋ ผ๋ฆฌ์ ์ธ ์์์ ๋ฌผ๋ฆฌ์ ์ธ ์์๊ฐ ๊ฐ๋ค๋ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ฐฐ์ด์ ํน์ ์์์ ์กฐํ๊ฐ ์์ฃผ ๋น ๋ฅด๋ค๋ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ํน์ ์์๋ฅผ ์กฐํํ ๋ ์ํ(traversing)ํ๋ ๊ฒ์ด ์๋๋ผ, ๋ฐฐ์ด์ ํน์งโฆ
์๋ ํ์ธ์ Noah์ ๋๋ค :) ์ค๋์ Gang of Four ์ํํธ์จ์ด ๋์์ธ ํจํด ์ค ํ์ ํจํด์ ์ํ๋ Observer Pattern ์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. iOS์์ Observer Pattern์ Foundation framework์ NotificationCenter, KVO(Key Value Observing), Property Obโฆ
์๋ ํ์ธ์ Noah์ ๋๋ค :) ์ข์ ๊ฐ๋ฐ์๋ ์ข์ ์ฝ๋๋ฅผ ์ง์ผ ํ ๊ฒ์ ๋๋ค. ์ ๊ฐ ์๊ฐํ๋ ์ข์ ์ฝ๋๋, ํ์๋ค์ด ๋ณด๊ธฐ์ ์ข์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ์์ ์ ์ด๊ณ ์๋๊ฐ ๋น ๋ฅธ ์ฝ๋๋ฅผ ์์ฑํด ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฑ์ ์ฌ์ฉํ๋ ์ฌ์ฉ์์๊ฒ ์ข์ ๊ฒฝํ์ ์๊ฒจ์ฃผ๋ ๊ฒ์ด ์ข์ ์ฝ๋๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ฒ ์๊ฐ์๋ ์ข์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ด์์ผ๋ก Swift ์ฑ๋ฅ ์ดํดํ๊ธฐ๋ผ๋ ์ ๋ชฉ์ผโฆ
์๋ ํ์ธ์ Noah์ ๋๋ค :) ์ค๋์ iOS ์ดํ๋ฆฌ์ผ์ด์ ์ ์ง์ ์ (Entry Point) ์ ๋ํด ์์๋ณด๋ฉฐ, ๊ธฐ๋ณธ์ ์ธ ์ฑ์ ๊ตฌ์กฐ์ ๋ํด ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค๐ Entry Point (์ง์ ์ ) ํ๋ก๊ทธ๋จ ์คํ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์ด์์ฒด์ ย ๋ฑ์ ์ํด ์ ์๋ ๊ด์ฉ๋ช ์ ํตํ, ์ง์ ๋ ์ด๋ฆ์ผ๋ก ์์๋ ์ ์๋ค. ๋ง์ ์ธ์ด์์(ํนํ C) ์ด ์ง์ ๋ ์ด๋ฆ์ย ์ด๋ผ๊ณ ๋ถ๋ฆฌโฆ