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..
์ ์ฒด ๊ธ
๊ต์ฅํ ๋struct ๊ฐ ํ์
(๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ๊ฐ์ ๋ณต์ฌํ์ฌ ์ ๋ฌ) ์์ ๋ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ์๋์ ๊ฑฐ ⇒ ํจ์ ์ข
๋ฃ(์ง์ญ๋ณ์, ๋งค๊ฐ๋ณ์), ํ๋ก๊ทธ๋จ ์ข
๋ฃ(static, ์ ์ญ๋ณ์) ์ธ์คํด์ค ์์๋ก ์ ์ธ์ ์ ์ฅ์์ฑ ์ ๋ถ ์์๋ก ์ ์ธ ๋ฉ์๋ ๋ด์์ ์์ฑ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ ์๋ฉธ์ ์์ class ์ฐธ์กฐ ํ์
(๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ์ ๋ฌ) ์์ ๊ฐ๋ฅ ARC๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ธ์คํด์ค ์์๋ก ์ ์ธํด๋ ๊ฐ๋ฅดํค๋ let/ var ์ ์ธ์ ๋ฐ๋ฆ ๋ฉ์๋ ๋ด์์ ์์ฑ ๋ณ๊ฒฝ ๊ฐ๋ฅ ์๋ฉธ์ ์์ ๊ฐ์ฒด ๋์ ์ธ์คํด์ค๋ผ๋ ์ฉ์ด ์ฌ์ฉ enum ํ์ ๋ ์ฌ๋ก(case) ์์์ ์ ์ํ ์ ์๋ ํ์
(์์ผ, ์ฑ๋ณ ..) ์ผ์ด์ค๊ฐ ์ ํ๊ฐ๋ฅํ ๊ฐ์ง ์๋ก ์ ํด์ ธ ์์ ๋ ์ ์ ⇒ ๋ค๋ฅธ๊ฒ ๋ฃ์ผ๋ฉด ํ์
์๋ฌ ์์ ๋ถ๊ฐ๋ฅ ๊ณตํต์ ๊ฐ๋ฐ์๊ฐ ๋ง์๋๋ก ๋ง๋ค..
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 ... ์ ์์ด์ฒ๋ผ n๋ฒ์งธ ํญ์ ์๊ฐ n-1 + n-2๋ก ๊ตฌ์ฑ๋๋ ์์ด์ ํผ๋ณด๋์น ์์ด์ด๋ผ ํ๋ค. (๋จ, n์ n
๊ธฐ์ด๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ๋ค์ง๋ฉด์ ํ์
์ฃผ์๊ณผ ํ์
์ถ๋ก ์ ๊ฐ๋
์ ์ ํ๊ฒ ๋์๋ค. ํ์
์ถ๋ก ์ ๊ธฐ์กด์ ์๊ณ ์์์ง๋ง ํ์
์ฃผ์์ด๋ผ๋ ๋จ์ด๋ ์ด๋ฒ์ ์ฒ์ ์ ํ๊ฒ ๋์์ผ๋ ์ด๋ฏธ ์๊ณ ์๋ ๊ฐ๋
์ด๊ธด ํ๋ค. ๋ ๊ฐ๋
์ ๋ชจ๋ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉ๋๋ ๊ฐ๋
์ด๋ค. 1. ํ์
์ฃผ์(Type Annotation) var name: String var name: String = "Lily" ํ์
์ฃผ์์ ๋ณ์๋ฅผ ์ ์ธํ ๋ ๋ณ์์ ์๋ฃํ๊น์ง ํจ๊ป ๋ช
์ํด์ฃผ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ฒซ๋ฒ์งธ ์ค ์ฒ๋ผ name์ด๋ผ๋ ๋ณ์๋ฅผ ์ ์ธํ๋ฉด์ String์ด๋ผ๋ ์๋ฃํ๊น์ง ํจ๊ป ์ง์ ํด์ค๋ค. ๋๋ฒ์งธ ์ค ์ฒ๋ผ ์ ์ธ๊ณผ ๋์์ ๊ฐ์ ์ง์ ํด์ค ์ ์๋ค. 2. ํ์
์ถ๋ก (Type Inference) var name = "Lily" ํ์
์ฃผ์๊ณผ ๋ฌ๋ฆฌ ๋ณ์๋ฅผ ์ ์ธํ ..
๋ณธ ๊ฒ์๋ฌผ์ OAuth๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ด ์๋ ์ ๊ฐ ์๊ฐํ ํน์ง์ ์ ๋ฆฌํ ๊ธ์
๋๋ค. ์ด๋ฒ์ ๋ค์ด์ด๋ฆฌ ์ฑ์ ์๋ก ์
๋ฐ์ดํธํ๋ฉด์ ์์
๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๋์
ํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค. ๊ธฐ์กด์ CoreData๋ก ์ฑ ๋ด์ ์ ์ฅํ๋ ๋ค์ด์ด๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ค ์์ ํ๊ฒ ์ ์ฅํ๊ธฐ ์ํด firebase์ ์ ์ฅํ๊ธฐ ์ํด์์๋ค. ์ ํ ์ ์ฑ
์ ๋ฐ๋ผ Apple๋ก๊ทธ์ธ์ ๊ตฌํํ์ง ์์ผ๋ฉด ๋ฆฌ์ ์ฌ์ ๊ฐ ๋๋ค. ๐
๋ฐ๋ผ์ Apple Login์ ๋น์ฐํ ๊ตฌํํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ณ , ์กฐ์ฌํด๋ณด๋ ์ฌ์ฉ์๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์์
๋ก๊ทธ์ธ์ด Kakao๋ผ๋ ๊ฒ์ ์๊ฒ๋์๋ค. ์ฌ์ฉ์์ ํธ์๋ฅผ ์ํด Kakao๋ฅผ ์ถ๊ฐํ๊ณ , ์ถ๊ฐ์ ์ผ๋ก ์ ์ ๊ตฌํํด๋ณธ ๊ฒฝํ์ด ์๋ Google๋ก๊ทธ์ธ๋ ํจ๊ป ์ ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค. 1. Apple ์ ํ๋ก๊ทธ์ธ์ ๊ผญ ์ ํ ๊ฐ๋ฐ์ ๊ณ์ ์ด ์์ด์ผ ํ๋ค. 1๋
์..
๋ณธ ๊ฒ์๋ฌผ์ ์จ๋ฐ์ ์ธํ๋ฐ ๊ฐ์๋ฅผ ๋ฃ๊ณ ์์ฑํ ๊ธ ์
๋๋ค. ์์
์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์ 2๊ฐ์ ์ค๋ ๋๊ฐ ๋์์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์๋ค. ์ด๋ฌํ ์ํฉ์์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋๋ฐ.. ์ด๋ฐ ๋ฌธ์ ๋ Thread-Safety๋ฅผ ํตํด ํด๊ฒฐํ ์ ์๋ค. ๋จ์ด์ ๋ป ๊ทธ๋๋ก ์ค๋ ๋๋ฅผ ์์ ํ๊ฒ ์ฌ์ฉํ๋ค. ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ๋์์ ์ฌ์ฉํ๋ค๊ณ ํด๋ ๋ฌธ์ ๊ฐ ์๊ธฐ์ง ์๊ณ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ํ๋ฒ์ ํ๊ฐ์ ์ค๋ ๋๋ง ์์์ ์ ๊ทผํ ์ ์๊ฒ ํ์ฌ ๊ฒฝ์์ํฉ์ ๋ฐ์์ํค์ง ์๊ณ ์์ ํ๊ฒ ์ฌ์ฉํ๋ค. ์ด๋ ๊ฒ ์ฌ์ฉํจ์ Thread-Safetyํ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋ค๊ณ ํ๋ค. 1. ๊ฒฝ์์ํฉ (Race Condition) var a = 1 DispatchQueue.global().async { sleep(1) a += 1 } DispatchQueue.gl..
๋ณธ ๊ฒ์๋ฌผ์ ์จ๋ฐ์ ์ธํ๋ฐ ๊ฐ์๋ฅผ ๋ฃ๊ณ ์์ฑํ ๊ธ ์
๋๋ค. 1. Dispatch Group์ ๊ฐ๋
์์ ํ๋์ ์์
์ด ๋๋๋ฉด ๊ทธ ์์
์ด ๋๋๋ ์์ ์ ๋ํด ์ ์ ์์๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ฐ ์์
๋ค์ ๋
๋ฆฝ์ ์ด์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ๊ฐ์ง ์์
์ ๊ทธ๋ฃน์ง์ด ํ๋์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ์ด๋ฐ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ธ ์์
์ด ๋๋๋ ์์ ์ ์๊ณ ์ถ์ ๋ ๋์คํจ์น ๊ทธ๋ฃน์ ์ฌ์ฉํ๋ค. ์ฌ๋ฌ ์์
์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ธ ์์
์ด๋ผ ํ๋ฉด ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฌ๊ฐ ๋ค์ด๋ก๋ ๋ฐ๊ณ ์ถ์ ๋ ํ๋์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ ๋ฐ๋๊ฒ์ ํ๋์ ์์
์ด๋ผ๊ณ ๋ณด๋ฉด ์ด๋ฐ ์์
์ ์ฌ๋ฌ๊ฐ ๋ฌถ์ด ์ฌ๋ฌ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ ๋ฐ๋ ๊ฒ์ ํ๋์ ๊ทธ๋ฃน์ ๋ฌถ์ด ์ฌ์ฉํ ์ ์๋ค. 3๊ฐ์ ๊ทธ๋ฃน์ ๋ฌถ์ธ ์์
์ 3๊ฐ์ ์ค๋ ๋์์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ฌ๋ฌ ์ค๋ ๋์์ ์์
์ ์ฒ๋ฆฌํ์ง๋ง ๊ฐ ๊ทธ๋ฃน์ ์์
์ด ๋๋ ์์ ์ ์ ์ ์..
๋ณธ ๊ฒ์๋ฌผ์ ์จ๋ฐ์ ์ธํ๋ฐ ๊ฐ์๋ฅผ ๋ฃ๊ณ ์์ฑํ ๊ธ ์
๋๋ค. 1. ๋ฐ๋์ ๋ฉ์ธํ์์ ์ฒ๋ฆฌํด์ผํ๋ ์์
์์ ์ ๋์คํจ์นํ์ ๋ํด ์๊ฒ ๊ณต๋ถํ ๋ ์คํ์ค๋ฒํ๋ก์ฐ์์ UI์ ๊ด๋ จ๋ ์์
์ ๋ฉ์ธํ์์ ์ฒ๋ฆฌํด์ผํ๋ค๋ ๊ธ์ ๋ณธ ์ ์ด ์๋ค. ๊ทธ๋๋ ๊ทธ๋ฅ ๊ทธ๋ ๊ตฌ๋ ํ๊ณ ๋์ด๊ฐ๋๋ฐ ๊ทธ๋ฅ ๋ด ๋จธ๋ฆฌ์ "UI์์
-> ๋ฉ์ธ์์ ์ฒ๋ฆฌํด์ผํจ" ์ด์ ๋๋ก๋ง ์ธ์ํ๊ณ ์์๋ค. ์ด๋ฒ์ ๋น๋๊ธฐ์ ๋ํด ์ข ๋ ์์ธํ ๊ณต๋ถํ๋ฉด์ UI๊ด๋ จ ์์
์ ๋ฉ์ธ์์ ์ฒ๋ฆฌํด์ผํจ์ ๋ค์ ๋ฃ๊ฒ ๋์๊ณ , ๊ทธ ์ด์ ๋ ํจ๊ป ์๊ฒ ๋์๋ค. ์๊ฐํด๋ณด๋ฉด ๊ฐ๋จํ๋ค. ๋ค๋ฅธ ์ค๋ ๋๋ก ๋ถ์ฐํด์ ์ฒ๋ฆฌํ๋ค๋ฉด ์์
์ ์์๊ฐ ์ผ์ ํ์ง ์๊ณ , ๋ค๋ฅธ ์ค๋ ๋์์ ๋๋ ์ ์ฒ๋ฆฌํ๋ฉด์ ๊ฐ์ญ์ด ์ผ์ด๋๊ฒ ๋๋ฉด์ ํ๋ฉด์ด ๊น๋นก๊ฑฐ๋ฆฌ๋ ๋ฑ์ ์ ๋๋ก ๋ ํ๋ฉด์ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๊ธฐ ์ด๋ ค์ธ ์ ์๋ค. ๋ฉ์ธํ์..