๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํด๋กœ์ €3

[Swift] ํด๋กœ์ € ํด๋กœ์ €(Closures)์–ด๋–ค ์ƒ์ˆ˜๋‚˜ ๋ณ€์ˆ˜์˜ ์ฐธ์กฐ๋ฅผ ์บก์ฒ˜(๊ฐ’์˜ ์ฐธ์กฐ๋ฅผ ๊ฐ–๋Š”๋‹ค.)ํ•ด ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ๋ธ”๋ŸญSwift๋Š” ๊ด€๋ จ๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•Œ์•„์„œ ์ฒ˜๋ฆฌ ํด๋กœ์ €์˜ ํ˜•ํƒœ์ „์—ญ ํ•จ์ˆ˜ : ์ด๋ฆ„์ด ์žˆ๊ณ  ์–ด๋–ค ๊ฐ’๋„ ์บก์ฒ˜ํ•˜์ง€ ์•Š๋Š” ํด๋กœ์ €์ค‘์ฒฉ ํ•จ์ˆ˜ : ์ด๋ฆ„์ด ์žˆ๊ณ  ๊ด€๋ จํ•œ ํ•จ์ˆ˜(ํ•˜์œ„→์ƒ์œ„)๋กœ ๋ถ€ํ„ฐ ๊ฐ’์„ ์บก์ฒ˜ ํ•  ์ˆ˜ ์žˆ๋Š” ํด๋กœ์ €ํด๋กœ์ € ํ‘œํ˜„ : ๊ฒฝ๋Ÿ‰ํ™” ๋œ ๋ฌธ๋ฒ•์œผ๋กœ ์“ฐ์—ฌ์ง€๊ณ  ๊ด€๋ จ๋œ ๋ฌธ๋งฅ(context)์œผ๋กœ๋ถ€ํ„ฐ ๊ฐ’์„ ์บก์ณํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์ด ์—†๋Š” ํด๋กœ์ € ํด๋กœ์ € ํ‘œํ˜„ (Closure Expressions)์ธ๋ผ์ธ ํด๋กœ์ €๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ๋ฒ•์— ์ดˆ์ ์ด ๋งž์ถฐ์ ธ์žˆ์Œ์ฝ”๋“œ์˜ ๋ช…ํ™•์„ฑ๊ณผ ์˜๋„๋ฅผ ์žƒ์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๋ฌธ๋ฒ•์„ ์ถ•์•ฝํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฌธ๋ฒ•์˜ ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์„ ์ œ๊ณต ์ •๋ ฌ ๋ฉ”์†Œ๋“œ(The Sorted Method)Swift ํ‘œ์ค€ ๋ผ์ด๋ธŒ.. 2024. 3. 18.
[Swift] Escaping Closure ์ด์Šค์ผ€์ดํ•‘ ํด๋กœ์ €(Escaping Closure)escaping ํด๋กœ์ €๋Š” ํด๋กœ์ €๊ฐ€ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌ๋์„ ๋•Œ, ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ์ข…๋ฃŒ๋œ ํ›„ ์‹คํ–‰๋˜๋Š” ํด๋กœ์ €ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ์•ž์— @escaping ์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ๋ช…์‹œํ•ด์•ผ ํ•จ์ด์Šค์ผ€์ดํ•‘ ํด๋กœ์ €์—์„œ๋Š” self๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์–ธ๊ธ‰ํ•ด์•ผ ํ•จ์ด์Šค์ผ€์ดํ•‘ ํด๋กœ์ €๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ์˜ˆ๋กœ๋Š” ๋น„๋™๊ธฐ๋กœ ์‹คํ–‰๋˜๋Š” HTTP Request CompletionHandler์ด ์žˆ์Œvar completionHandlers: [() -> Void] = []func someFunctionWithEscapingClosure(completionHandler: @escaping () -> Void) { completionHandlers.append(completionHandler)} Non-Escaping .. 2023. 5. 20.
[Swift] ํด๋กœ์ € (Closure) ํด๋กœ์ € (Closure) ์‚ฌ์šฉ์ž์˜ ์ฝ”๋“œ ์•ˆ์—์„œ ์ „๋‹ฌ๋˜์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ์ง์„ ๊ฐ€์ง„ ์ค‘๊ด„ํ˜ธ"{}" ๊ตฌ๋ถ„๋œ ์ฝ”๋“œ์˜ ๋ธ”๋ก ์ด๋ฆ„์ด ์—†๋Š” ํ•จ์ˆ˜ ํด๋กœ์ €๋Š” ์–ด๋– ํ•œ ์ƒ์ˆ˜๋‚˜ ๋ณ€์ˆ˜์˜ ์ฐธ์กฐ๋ฅผ ์บก์ฒ˜(capture)ํ•ด์„œ ์ €์žฅ ๊ฐ€๋Šฅ Swift๋Š” ์ด ์บก์ฒ˜์™€ ๊ด€๋ จํ•œ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•Œ์•„์„œ ์ฒ˜๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ๋ฐ˜ํ™˜ ๊ฐ’์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ํ•จ์ˆ˜์™€ ๋™์ผ Swift ํด๋กœ์ €๋Š” ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ๊น”๋”ํ•˜๊ณ  ๋ช…ํ™•ํ•œ ์Šคํƒ€์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ ๋ฌธ๋งฅ(context)์—์„œ ์ธ์ž ํƒ€์ž…๊ณผ ๋ฐ˜ํ™˜ ํƒ€์ž…์˜ ์ถ”๋ก  ๋‹จ์ผ ํ‘œํ˜„์‹ ํด๋กœ์ €์˜ ์•”์‹œ์  ๋ฐ˜ํ™˜ ์ถ•์•ฝ๋œ ์ธ์ž ์ด๋ฆ„ ํ›„์œ„ ํด๋กœ์ € ๋ฌธ๋ฒ• { (๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„ : ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…) -> ๋ฐ˜ํ™˜ํƒ€์ž… in ํด๋กœ์ € ํ‘œํ˜„์‹ ์ฝ”๋“œ } ํ›„ํ–‰ ํด๋กœ์ € (trailing closure) ํด๋กœ์ €๊ฐ€ ํ•จ์ˆ˜์˜ ๋งˆ์ง€๋ง‰ argument๋ผ๋ฉด, .. 2023. 2. 6.
๋ฐ˜์‘ํ˜•