๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

Interview5

[Network] ํ”„๋กœํ† ์ฝœ(Protocol)์ด๋ž€? (What is a protocol?) Protocol ๐Ÿ“ƒ Protocol์˜ ์‚ฌ์ „์  ์˜๋ฏธ๋Š” "์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ๋‚˜ ๋‹จ๋ง๊ธฐ ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์„ ์›ํ™œํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํ†ต์‹  ๊ทœ์•ฝ" ์ด๋‹ค. ์ฆ‰, ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ด ๋ฐ”๋กœ ํ”„๋กœํ† ์ฝœ๊ณผ ๊ฐ™์€ ์˜๋ฏธ์ด๋‹ค. ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์€ ์‰ฝ๊ฒŒ ๋งํ•ด ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์•ฝ์†์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค. ๊ตฌ์„ฑ ๐Ÿ”— ํ”„๋กœํ† ์ฝœ์€ ๋ฌผ๋ฆฌ์  ์ธก๋ฉด๊ณผ ๋…ผ๋ฆฌ์  ์ธก๋ฉด ์ด๋ ‡๊ฒŒ 2๊ฐ€์ง€๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๋ฌผ๋ฆฌ์  ์ธก๋ฉด ๋ฌผ๋ฆฌ์  ์ธก๋ฉด์€ ๋ง ๊ทธ๋Œ€๋กœ ๋ฌผ๋ฆฌ์ ์ธ ๊ธฐ๊ธฐ์˜ ์–ด๋–ค ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์‹ค์ œ ์–ด๋–ค ์žฅ๋น„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๊ฒƒ์ด๋ฉฐ, ์–ด๋–ค ๋‹จ์ž๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ฉฐ, ํšŒ์„ ์˜ ๊ทœ๊ฒฉ์€ ์–ด๋А ์ •๋„๋กœ ์„ค์ •ํ• ์ง€๊ฐ€ ์—ฌ๊ธฐ์— ํฌํ•จ๋œ๋‹ค. ๋…ผ๋ฆฌ์  ์ธก๋ฉด ๋…ผ๋ฆฌ์  ์ธก๋ฉด์€ ๋ฌผ๋ฆฌ์ ์ธ ๊ฒƒ์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ ๋…ผ๋ฆฌ์ ์ธ ๋ฐฉ์‹์„ ์˜๋ฏธํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ค ์‹์œผ๋กœ ํ‘œํ˜„ํ•  ๊ฒƒ์ด๋ฉฐ, ์–ด๋–ค ํ˜•์‹ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  .. 2022. 4. 6.
[Swift] ํด๋กœ์ ธ๋Š” ์™œ ์ฐธ์กฐํƒ€์ž…์ผ๊นŒ?(Why closure is reference type?) ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํด๋กœ์ ธ๊ฐ€ ์™œ ์ฐธ์กฐํƒ€์ž…์ธ์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ํด๋กœ์ ธ๋ž€? ํด๋กœ์ ธ๋Š” ์ด๋ฆ„์ด ์ •ํ•ด์ ธ์žˆ์ง€ ์•Š์€ ํ•จ์ˆ˜ ์ฆ‰, ์ต๋ช…ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค! (์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด ๋ชจ๋“  ํ•จ์ˆ˜๋ฅผ ๋œปํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.) ์ผ๊ธ‰ ๊ฐ์ฒด๋กœ์จ ์—ญํ• ์„ ํ•˜๋ฏ€๋กœ ์ธ์ž๋กœ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ๊ณ  ๋ฐ˜ํ™˜๊ฐ’์„ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ํ•จ์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑ๋˜์–ด ์žˆ์ฃ ? func hello() -> String { return "hello" } ํด๋กœ์ ธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ํ•จ์ˆ˜๋ช…์ด ์—†์ด ํ•จ์ˆ˜์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. let hello:(()->String) = { return "hello"} ํด๋กœ์ ธ์— ๋Œ€ํ•œ ๊ธ€์ด ์•„๋‹ˆ๋ฏ€๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ๋งŒ ์„ค๋ช…ํ•˜๊ณ  ๋„˜์–ด๊ฐˆ๊ฒŒ์š”~ ์ฐธ์กฐ ํƒ€์ž…์ด๋ž€? ์ฐธ์กฐ ํƒ€์ž…์€ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด์„œ ์‚ฌ.. 2021. 5. 27.
[CS] ์ผ๊ธ‰ ๊ฐ์ฒด๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ํด๋กœ์ ธ์— ๋Œ€ํ•ด์„œ ์ •ํ™•ํžˆ ๊ณต๋ถ€ํ•˜๋ ค๊ณ  ์•Œ์•„๋ณด๋˜ ์™€์ค‘์— "ํด๋กœ์ ธ๋Š” ์ผ๊ธ‰๊ฐ์ฒด์ด๋‹ค" ๋ผ๋Š” ๋ง์—์„œ ์ผ๊ธ‰๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•  ์ˆ˜๊ฐ€ ์—†์–ด์„œ ๊ตฌ์ฒด์ ์œผ๋กœ ์•Œ์•„๋ณด๊ณ  ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! First-Class-Object(์ผ๊ธ‰ ๊ฐ์ฒด) ์ผ๊ธ‰ ๊ฐ์ฒด๋ž€ ๋ฌด์—‡์ผ๊นŒ?๐Ÿง ์œ„ํ‚ค๋ฐฑ๊ณผ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. "์ผ๊ธ‰ ๊ฐ์ฒด๋ž€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์— ์ผ๋ฐ˜์ ์œผ๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ์„ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ๋ณดํ†ต ํ•จ์ˆ˜์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ธฐ๊ธฐ, ์ˆ˜์ •ํ•˜๊ธฐ, ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•˜๊ธฐ์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์„ ์ง€์›ํ•  ๋•Œ ์ผ๊ธ‰ ๊ฐ์ฒด๋ผ๊ณ  ํ•œ๋‹ค." ์ฆ‰, ํ•จ์ˆ˜๋ฅผ ๊ฐ’์œผ๋กœ๋„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„ฃ์–ด์ค„ ์ˆ˜๋„ ์žˆ๊ณ  ๋ฆฌํ„ด๊ฐ’์œผ๋กœ๋„ ์“ฐ์ผ ์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ์ผ๊ธ‰ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. 1960๋…„๋Œ€, ์˜๊ตญ์˜ ์ปดํ“จํ„ฐ ๊ณผํ•™์ž ํฌ๋ฆฌ์Šคํ† ํผ ์ŠคํŠธ๋ž˜์น˜๊ฐ€ ์ฒ˜์Œ .. 2021. 5. 12.
[iOS ๋ฉด์ ‘์งˆ๋ฌธ] ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ƒ๋ช…์ฃผ๊ธฐ (ViewController Life Cycle) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ์‹œ๊ฐ„์— ์•ฑ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃฌ ์ ์ด ์žˆ๋Š”๋ฐ์š”. (ํ˜น์‹œ ์•ˆ๋ณด์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ์—์„œ ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค!) ์˜ค๋Š˜์€ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ViewController Life Cycle ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด 6๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฌด์—‡์„ ๋œปํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ์ „์— ํ•œ๋ฒˆ ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋˜๋Š”์ง€ ๋ด๋ณผ๊นŒ์š”? ViewController ๋จผ์ € ์ฒซ๋ฒˆ์งธ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๊ฐ ๋ฉ”์†Œ๋“œ๋งˆ๋‹ค ์ถœ๋ ฅ์„ ํ•˜๊ฒŒ๋” ๋งŒ๋“ค์–ด๋†“๊ฒ ์Šต๋‹ˆ๋‹ค. import UIKit class ViewController: UIViewController { override func loadView() { super.loadView() print("๋ทฐ ๋กœ๋“œ์ค‘~") } override.. 2021. 3. 22.
[iOS ๋ฉด์ ‘์งˆ๋ฌธ] Delegate๋Š” retain์ด ๋ ๊นŒ? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ์ฃผ์ œ๋Š” Delegate๋Š” retain์ด ๋ ๊นŒ? ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ์ œ๋Š” ๋จผ์ € ์ง€๋‚œ ์‹œ๊ฐ„์— ๋‹ค๋ค˜์—ˆ๋˜ Delegate์™€ Protocol ๊ทธ๋ฆฌ๊ณ  Retain Cycle์ด๋ž€? ์„ ๋ณด๊ณ  ์˜ค์‹œ๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™์•„์š”! ๊ทธ๋Ÿผ ๋ฐ”๋กœ ์‹œ์ž‘ํ•ด๋ณผ๊ฒŒ์š”~ Class-Ony-Protocol ๋จผ์ € Retain์€ ์ €๋ฒˆ ์‹œ๊ฐ„์— ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด๋ƒˆ์„๋•Œ ์ฆ‰ ์ธ์Šคํ„ดํ™”๋ฅผ ์‹œ์ผœ์ค„๋•Œ ์ƒ๊ธด๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋Š” ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Delegate๋Š” Protocol์„ ์ฑ„ํƒํ•˜๋Š” ๊ฒƒ์ด๊ณ  Protocol์€ Class๊ฐ€ ์•„๋‹ˆ๋‹ˆ๊น Retain์ด ๋˜์ง€ ์•Š๋Š”๊ฑฐ๊ฒ ์ง€ ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ž˜์Šค์—์„œ ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•  ๋•Œ๋Š” Class - Only - Protocol ์ด๋ผ๋Š” ํด๋ž˜์Šค ์ „์šฉ ํ”„๋กœํ† .. 2020. 12. 23.
728x90
๋ฐ˜์‘ํ˜•