1. heap๋ณด๋ค๋ stack์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น class๋ณด๋จ struct๋ enum์ ์ฌ์ฉํ๋ค. class๋ heapํ ๋น, struct๋ enum์ stackํ ๋น์ด๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ํ ๋น class: heap struct: stack enum: stack heap โ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ฌ์ฉํ์ง ์์ ์์ญ์ ์ฐพ์ ํ ๋นํ๋ ๋ฐฉ์(๋์ ํ ๋น)์ด๋ฏ๋ก ์ข ๋ณต์กํจ (์๋๊ฐ ๋๋ฆผ) stack โ LIFO ๋ฐฉ์์ด๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๊ฐ ๋จ์ํจ (์๋๊ฐ ๋น ๋ฆ, O(1)) 2. ์ ์ ๋์คํจ์น(static Dispatch)๋ฅผ ์งํฅ ์ผ๋ฐ์ ์ผ๋ก swift์์๋ dynamic dispatch๋ฅผ ์ฌ์ฉํ๋๋ก ๋์ด์์ ํด๋์ค(๋ฉ์๋, ํ๋กํผํฐ)๋ฅผ ์ ์ธํ ๋ ์์๋์ง ์๋ ํด๋์ค์ final์ ๋ถ์ด๋ฉด ์ฑ๋ฅ์ด ํฅ์๋จ ํด๋์ค๋ dynamic dispatch..
iOS/Interview Questions
struct ๊ฐ ํ์
(๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ๊ฐ์ ๋ณต์ฌํ์ฌ ์ ๋ฌ) ์์ ๋ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ์๋์ ๊ฑฐ โ ํจ์ ์ข
๋ฃ(์ง์ญ๋ณ์, ๋งค๊ฐ๋ณ์), ํ๋ก๊ทธ๋จ ์ข
๋ฃ(static, ์ ์ญ๋ณ์) ์ธ์คํด์ค ์์๋ก ์ ์ธ์ ์ ์ฅ์์ฑ ์ ๋ถ ์์๋ก ์ ์ธ ๋ฉ์๋ ๋ด์์ ์์ฑ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ ์๋ฉธ์ ์์ class ์ฐธ์กฐ ํ์
(๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ์ ๋ฌ) ์์ ๊ฐ๋ฅ ARC๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ธ์คํด์ค ์์๋ก ์ ์ธํด๋ ๊ฐ๋ฅดํค๋ let/ var ์ ์ธ์ ๋ฐ๋ฆ ๋ฉ์๋ ๋ด์์ ์์ฑ ๋ณ๊ฒฝ ๊ฐ๋ฅ ์๋ฉธ์ ์์ ๊ฐ์ฒด ๋์ ์ธ์คํด์ค๋ผ๋ ์ฉ์ด ์ฌ์ฉ enum ํ์ ๋ ์ฌ๋ก(case) ์์์ ์ ์ํ ์ ์๋ ํ์
(์์ผ, ์ฑ๋ณ ..) ์ผ์ด์ค๊ฐ ์ ํ๊ฐ๋ฅํ ๊ฐ์ง ์๋ก ์ ํด์ ธ ์์ ๋ ์ ์ โ ๋ค๋ฅธ๊ฒ ๋ฃ์ผ๋ฉด ํ์
์๋ฌ ์์ ๋ถ๊ฐ๋ฅ ๊ณตํต์ ๊ฐ๋ฐ์๊ฐ ๋ง์๋๋ก ๋ง๋ค..
foreground์ํ ์ฑ์ด ์คํ๋์ด ์ฌ์ฉ์๊ฐ ์ฑ์ ๋ณด๊ณ ์๋ ์ํ background์ํ ์ฑ์ด ์คํ๋์ด ์์ง๋ง ์ฌ์ฉ์๊ฐ ์ฑ์ ๋ณด๊ณ ์์ง๋ ์์ ์ํ (ex. ์์
์ฌ์ ์ค ๋ค๋ฅธ ํ๋ฉด์ผ๋ก ์ ํ) ** background ์ํ๋ผ๊ณ ํด๋ ์ฑ์ด ์คํ ์ค์ด์ง ์์๊ฑด ์๋๋ค. foreground์ ์์ ๋์๋.. ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๊ธฐํ ์์คํ
๋ฆฌ์์ค์ ๋ํด์ background๋ณด๋ค ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ฉฐ ์์คํ
์ ์ด๋ฌํ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ์์ ๋ฐ๋ผ background ์ฑ์ ์ข
๋ฃํ๋ค. background์ ์์ ๋์๋ ๊ฐ๋ฅํ ์ ์ ๋ฉ๋ชจ๋ฆฌ๊ณต๊ฐ์ ์ฌ์ฉํด์ผํ๋ฉฐ(์์คํ
๋ฆฌ์์ค ํด์ , ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ํ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์์ฑ) ์ฐ์ ์์์ ์ํด foreground task๋ณด๋ค ๋ ๋ฎ์ ์์์ ํ ๋น ๋ฐ๋๋ค. ์ถ์ฒ: htt..
@main์ ํ๋ก๊ทธ๋จ ์คํ ์์ ์ ์ง์
์ ์ผ๋ก ํ์
์ ์ง์ ํ๊ธฐ ์ํ Swift ์ธ์ด์ ๊ธฐ๋ฅ์ด๋ค. ์ฌ์ฉ์๋ ํ ๋ ๋ฒจ์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋์ @main๋จ์ผ ์ ํ์ ์์ฑ์ ์ฌ์ฉํ ์ ์๊ณ , ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ๋ ํ๋กํ ์ฝ์ด๋ ํด๋์ค ์์์ ํตํด ๋ง์ถคํ ์ง์
์ ๋์์ ์ ๊ณตํ ์ ์๋ค. ** AppDelegate์์ ๋ณผ ์ ์๋ค. @main vs @UIApplicationMain 1. ๊ตฌ์กฐ์ฒด์์ @main ๋์ @UIApplicationMain๋ฅผ ์ด๋ค๋ฉด class ์ ์ธ์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค๋ ์ค๋ฅ๊ฐ ๋ฐ์! 2. @UIApplicationMain ๋์ @main์ ์ฌ์ฉํจ์ผ๋ก ํ์
๊ธฐ๋ฐ์ ์ค์ํํธ ์ฝ๋์์ ์ด์์ ์ธ ์ง์
์ ์ ์๋ ค์ฃผ๋ฉฐ main() ํจ์๋ ์ผ๋ฐ ์ ์ ๋ฉ์๋์ด๋ฏ๋ก ํ๋กํ ์ฝ์์ ํ์ฅ ๋ฉ์๋ ๋๋ ๊ธฐ๋ณธ ํด๋์ค..
UIApplication ์ฑ๊ธํด ๊ฐ์ฒด๊ฐ ์์ฑ๋จ UIApplication์ด๋? iOS์์ ์คํ๋๋ ์ฑ์ ์ค์ ์ง์ค ์ ์ด ๋ฐ ์กฐ์ ์ง์ 1. ์ฑ ์์ -> UIApplicationMain()ํธ์ถ -> ์ฑ๊ธํค UIApplication ๊ฐ์ฒด ์์ฑ -> sharedํด๋์ค ๋ฉ์๋ ํธ์ถ -> ๊ฐ์ฒด์ ์ ๊ทผ => ์ฑ ์์ํ๋ฉด UIApplicationMain()์ด shared app instance๋ฅผ ๋ง๋ ๋ค. ์ฐธ๊ณ https://github.com/jwonyLee/TIL/blob/master/iOS/Interview/UIApplicationMain.md https://jinshine.github.io/2018/05/28/iOS/%EC%95%B1%EC%9D%98%20%EC%83%9D%EB%AA%85%EC%A3%BC%EA%B..
App thinning ๐คช ์ฑ์คํ ์ด์ ์ด์์ฒด์ ๊ฐ ๋๋ฐ์ด์ค์ ์ ํ๋ฆฌ์ผ์ด์
์ด ์ค์น๋ ๋, ์ฑ์ด ๋๋ฐ์ด์ค์ ๋ง๊ฒ ์ค์น๋๋๋ก ํ๋ ์ค์น ์ต์ ํ ๊ธฐ์ ์ ์๋ฏธํ๋ค. ์ต์ํ์ ๋์คํฌ ์ฌ์ฉ๊ณผ ๋น ๋ฅธ ๋ค์ด๋ก๋๊ฐ ๊ฐ๋ฅํ๋ค. => ๋ ๋น ๋ฅธ ๋ค์ด๋ก๋์ ๋ ๋ง์ ๊ณต๊ฐ์ผ๋ก ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ค. ์ข
๋ฅ ๐ 1. Slicing ์ฑ์ด ์ง์ํ๋ ์ฌ๋ฌ ๋๋ฐ์ด์ค์ ๋ํด ๊ฐ๊ฐ ์กฐ๊ฐ ์ ํ๋ฆฌ์ผ์ด์
๋ฒ๋ค์ ์์ฑํ๊ณ , ํด๋น ๋๋ฐ์ด์ค์ ๊ฐ์ฅ ์ ํฉํ ์กฐ๊ฐ์ ์ ๋ฌํ๋ ๊ธฐ์ ์ด๋ค. ๊ฐ๋ฐ์๊ฐ App store connect์ ์
๋ก๋ํ๋ฉด, ์ฑ ์คํ ์ด์์ ๋๋ฐ์ด์ค ํน์ฑ์ ๋ฐ๋ผ ๋ค์ํ ๋ฒ์ ์ ์กฐ๊ฐ๋ค์ ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๊ฐ ๊ทธ ์กฐ๊ฐ ์ค์์ ๊ฐ์ฅ ์๋ง์ ์กฐ๊ฐ(app variant)์ ๋ค์ด๋ก๋ ๋ฐ๋ ๊ฒ์ด๋ค. ์ฌ์ง๊ณผ ๊ฐ์ด ์ฌ๋ฌ ์กฐ๊ฐ์ผ๋ก ๋๋ ๋ฒ๋ค์ ํ์ํ ๊ฒ..
UIViewController UIKit ์ฑ์ ๋ทฐ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด ํ๋ฉด ํ๋๋ฅผ ๊ด๋ฆฌํ๋ ๋จ์ ๋ชจ๋ ์ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ ์ด์์ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๊ฐ์ง๊ณ ์์ ์ด๋ค์ญํ ?๐ค ๋ทฐ์ ๊ณ์ธต์ ๊ด๋ฆฌํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ์ด๋ป๊ฒ ๋ฟ๋ฆด์ง ๊ด๋ฆฌํ๋ ๋งค๊ฐ์ฒด ์ญํ ! ๋ทฐ์ ๋ํ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํจ (์ด๋ฏธ์ง, ์์ฑ, ์ง๋, ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ๋ฆฌ์์ค) ํ๋ฉด ์ฌ์ด์ฆ, ํ๋ฉด ํ์ ์ ๋ํ ๋์์ ํจ => ์๋ฐ ์ฌ๋ฌ๊ฐ์ง ๊ธฐ๋ฅ์ ํ๊ธฐ ๋๋ฌธ์ ViewController์ ์ญํ ์ด ๋ง์์ง๋ฉด์ ๋์์ธํจํด๋ค ์ฌ์ฉ (Model, View, ViewController) ๋ทฐ๋ ๋์ ํ๋ฉด์์๋ Storyboard๋ก ๊ตฌ์ฑํ ํ๋ฉด๋ง ๋ณด์ด์ง๋ง, ์ค์ ๋ก๋ ์ฌ์ง๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋ง์ ์ธต์ผ๋ก ์์ฌ์๋ค. UIWindowScene -> UIWindow -> UITran..
UserDefaults ์ ํ์์ ๊ธฐ๋ณธ ์ ๊ณต๋จ key-value ์์ผ๋ก ์ ์ฅํ๋ ์ธํฐํ์ด์ค ๋ฐํ์ธ ํ๊ฒฝ์์๋ง ๋์ํ๋ฉด์ ์ฑ์ด ์คํ๋๋ ๋์ ๊ธฐ๋ณธ์ ์ฅ์์ ์ ๊ทผํด ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๊ณ ๊ฐ์ ธ์ค๋ ์ญํ ์ ํจ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ณด๋ค ๋จ์ผ ๋ฐ์ดํฐ(ex ์ฌ์ฉ์ ๊ธฐ๋ณธ ์ค์ , ๋ก๊ทธ์ธ ์ฌ๋ถ ๋ฑ)๋ฅผ ์ ์ฅํ๋๋ฐ ๋ ์ ํฉ ์ฑ๊ธํค ํจํด์ผ๋ก ์ค๊ณ๋์ด ์ฑ ์ ์ฒด์ ๋จ ํ๋์ ์ธ์คํด์ค๋ง ์กด์ฌ CoreData ์ ํ์์ ๊ธฐ๋ณธ ์ ๊ณต๋จ UserDefaults์ ๋น๊ตํ์ฌ ์ข ๋ ๋ฐฉ๋ํ๊ณ ๋ณต์กํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ฐ ์ ํฉ Data Model์ ์์ฑํ ํ Entity๋ฅผ ์์ฑํ๋ค. SQLite ์ ํ์์ ๊ธฐ๋ณธ ์ ๊ณต๋๋๊ฒ์ด ์๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ, ๋น๊ต์ ๊ฐ๋ฒผ์ด ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๋ ์ ํฉ CoreData๋ ํ๋ ์์ํฌ์ธ๊ฒ์ ๋ฐํด SQLite๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ C..