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

closure2

[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.
๋ฐ˜์‘ํ˜•