์ „์ฒด ๊ธ€

๊ต‰์žฅํ•  ๋‚˜
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" ํƒ€์ž… ์ฃผ์„๊ณผ ๋‹ฌ๋ฆฌ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ• ..
ยท iOS
๋ณธ ๊ฒŒ์‹œ๋ฌผ์€ OAuth๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์•„๋‹Œ ์ œ๊ฐ€ ์ƒ๊ฐํ•œ ํŠน์ง•์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ์— ๋‹ค์ด์–ด๋ฆฌ ์•ฑ์„ ์ƒˆ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ฉด์„œ ์†Œ์…œ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. ๊ธฐ์กด์— CoreData๋กœ ์•ฑ ๋‚ด์— ์ €์žฅํ•˜๋˜ ๋‹ค์ด์–ด๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‹ค ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด firebase์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ์˜€๋‹ค. ์• ํ”Œ ์ •์ฑ…์— ๋”ฐ๋ผ Apple๋กœ๊ทธ์ธ์€ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฆฌ์  ์‚ฌ์œ ๊ฐ€ ๋œ๋‹ค. ๐Ÿ˜… ๋”ฐ๋ผ์„œ Apple Login์€ ๋‹น์—ฐํžˆ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๊ณ , ์กฐ์‚ฌํ•ด๋ณด๋‹ˆ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์†Œ์…œ๋กœ๊ทธ์ธ์ด Kakao๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด Kakao๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ์ถ”๊ฐ€์ ์œผ๋กœ ์ „์— ๊ตฌํ˜„ํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ๋Š” Google๋กœ๊ทธ์ธ๋„ ํ•จ๊ป˜ ์ ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. 1. Apple ์• ํ”Œ๋กœ๊ทธ์ธ์€ ๊ผญ ์• ํ”Œ ๊ฐœ๋ฐœ์ž ๊ณ„์ •์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. 1๋…„์—..
ยท iOS
๋ณธ ๊ฒŒ์‹œ๋ฌผ์€ ์•จ๋Ÿฐ์˜ ์ธํ”„๋Ÿฐ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ž‘์„ฑํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค. ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์—์„œ 2๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š”๋ฐ.. ์ด๋Ÿฐ ๋ฌธ์ œ๋Š” Thread-Safety๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ์–ด์˜ ๋œป ๊ทธ๋Œ€๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค. ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•œ๋ฒˆ์— ํ•œ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋งŒ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ๊ฒฝ์Ÿ์ƒํ™ฉ์„ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•จ์„ Thread-Safetyํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค. 1. ๊ฒฝ์Ÿ์ƒํ™ฉ (Race Condition) var a = 1 DispatchQueue.global().async { sleep(1) a += 1 } DispatchQueue.gl..
ยท iOS
๋ณธ ๊ฒŒ์‹œ๋ฌผ์€ ์•จ๋Ÿฐ์˜ ์ธํ”„๋Ÿฐ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ž‘์„ฑํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค. 1. Dispatch Group์˜ ๊ฐœ๋… ์•ž์„œ ํ•˜๋‚˜์˜ ์ž‘์—…์ด ๋๋‚˜๋ฉด ๊ทธ ์ž‘์—…์ด ๋๋‚˜๋Š” ์‹œ์ ์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Ÿฐ ์ž‘์—…๋“ค์€ ๋…๋ฆฝ์ ์ด์˜€๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ž‘์—…์„ ๊ทธ๋ฃน์ง€์–ด ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ์ด๋Ÿฐ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์ธ ์ž‘์—…์ด ๋๋‚˜๋Š” ์‹œ์ ์„ ์•Œ๊ณ  ์‹ถ์„ ๋•Œ ๋””์ŠคํŒจ์น˜ ๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•œ๋‹ค. ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์ธ ์ž‘์—…์ด๋ผ ํ•˜๋ฉด ์ด๋ฏธ์ง€๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ณ  ์‹ถ์„ ๋•Œ ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š”๊ฒƒ์„ ํ•˜๋‚˜์˜ ์ž‘์—…์ด๋ผ๊ณ  ๋ณด๋ฉด ์ด๋Ÿฐ ์ž‘์—…์„ ์—ฌ๋Ÿฌ๊ฐœ ๋ฌถ์–ด ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š” ๊ฒƒ์„ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์„ ๋ฌถ์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 3๊ฐœ์˜ ๊ทธ๋ฃน์„ ๋ฌถ์ธ ์ž‘์—…์„ 3๊ฐœ์˜ ์Šค๋ ˆ๋“œ์—์„œ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜์ง€๋งŒ ๊ฐ ๊ทธ๋ฃน์˜ ์ž‘์—…์ด ๋๋‚œ ์‹œ์ ์„ ์•Œ ์ˆ˜ ์žˆ..
ยท iOS
๋ณธ ๊ฒŒ์‹œ๋ฌผ์€ ์•จ๋Ÿฐ์˜ ์ธํ”„๋Ÿฐ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ž‘์„ฑํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค. 1. ๋ฐ˜๋“œ์‹œ ๋ฉ”์ธํ์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ์ž‘์—… ์˜ˆ์ „์— ๋””์ŠคํŒจ์น˜ํ์— ๋Œ€ํ•ด ์–•๊ฒŒ ๊ณต๋ถ€ํ•  ๋•Œ ์Šคํƒ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์—์„œ UI์™€ ๊ด€๋ จ๋œ ์ž‘์—…์€ ๋ฉ”์ธํ์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค๋Š” ๊ธ€์„ ๋ณธ ์ ์ด ์žˆ๋‹ค. ๊ทธ๋•Œ๋Š” ๊ทธ๋ƒฅ ๊ทธ๋ ‡๊ตฌ๋‚˜ ํ•˜๊ณ  ๋„˜์–ด๊ฐ”๋Š”๋ฐ ๊ทธ๋ƒฅ ๋‚ด ๋จธ๋ฆฌ์— "UI์ž‘์—… -> ๋ฉ”์ธ์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผํ•จ" ์ด์ •๋„๋กœ๋งŒ ์ธ์‹ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์ด๋ฒˆ์— ๋น„๋™๊ธฐ์— ๋Œ€ํ•ด ์ข€ ๋” ์ž์„ธํžˆ ๊ณต๋ถ€ํ•˜๋ฉด์„œ UI๊ด€๋ จ ์ž‘์—…์€ ๋ฉ”์ธ์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผํ•จ์„ ๋‹ค์‹œ ๋“ฃ๊ฒŒ ๋˜์—ˆ๊ณ , ๊ทธ ์ด์œ ๋„ ํ•จ๊ป˜ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ƒ๊ฐํ•ด๋ณด๋ฉด ๊ฐ„๋‹จํ•˜๋‹ค. ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ ๋ถ„์‚ฐํ•ด์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด ์ž‘์—…์˜ ์ˆœ์„œ๊ฐ€ ์ผ์ •ํ•˜์ง€ ์•Š๊ณ , ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ๋‚˜๋ˆ ์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด์„œ ๊ฐ„์„ญ์ด ์ผ์–ด๋‚˜๊ฒŒ ๋˜๋ฉด์„œ ํ™”๋ฉด์ด ๊นœ๋นก๊ฑฐ๋ฆฌ๋Š” ๋“ฑ์˜ ์ œ๋Œ€๋กœ ๋œ ํ™”๋ฉด์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”์ธํ์—..
๋ฆด๋ฆฌ๐Ÿฐ
Hi Lily