NOW-ON / iOS-Interview-Preparation

iOS ๋ฉด์ ‘ ์ค€๋น„
3 stars 0 forks source link

Closure & Escaping Closure #11

Closed Glsme closed 1 year ago

Glsme commented 1 year ago

๐Ÿ—“๏ธ ๋งˆ๊ฐ์ผ

2023.01.22

๐Ÿ’ ์ฐธ์—ฌ์ž

โš ๏ธ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ต๋ณ€ ๋‹จ ์‚ฌ๋žŒ์ด ์ด์Šˆ close ํ•˜๊ณ  ๋ฆฌ๋“œ๋ฏธ์— ํ•ญ๋ชฉ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ์„ธ์š”.

Yun-YeoJin commented 1 year ago

1. ํด๋กœ์ €(Closure)

2. ํƒˆ์ถœ ํด๋กœ์ €(Escaping Closure)

LeeJoobang commented 1 year ago
heydoy commented 1 year ago

Closure

ํด๋กœ์ €๋Š” ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋‹ค์–‘ํ•˜๊ฒŒ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ๋Š” ๋…๋ฆฝ์ ์ธ ๊ธฐ๋Šฅ ๋ธ”๋ก. Swift์˜ ํด๋กœ์ €๋Š” ์˜ค๋ธŒ์ ํ‹ฐ๋ธŒ C์™€ C์˜ ๋ธ”๋ก, ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋žŒ๋‹ค์™€ ์œ ์‚ฌ.

ํด๋กœ์ €๋Š” ํด๋กœ์ €๊ฐ€ ์ •์˜๋œ ๋งฅ๋ฝ์—์„œ ์ƒ์ˆ˜์™€ ๋ณ€์ˆ˜์˜ ์ฐธ์กฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์บก์ณํ•  ์ˆ˜ ์žˆ๋‹ค.

ํด๋กœ์ € ํ‘œํ˜„์‹

{ (parameters) -> return type in
    statements
}

ํด๋กœ์ €๋Š” ์ฐธ์กฐ ํƒ€์ž…

ํ•จ์ˆ˜์™€ ํด๋กœ์ €๋Š” ์ฐธ์กฐ ํƒ€์ž… ํด๋กœ์ €๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ์ƒ์ˆ˜, ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋ฉด ๋™์ผํ•œ ํด๋กœ์ €๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์ฐธ์กฐ ์นด์šดํŠธ๊ฐ€ ์ฆ๊ฐ€.

Escaping Closure

ํƒˆ์ถœ ํด๋กœ์ €๋Š” ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋˜๋‚˜, ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜๋œ ์ดํ›„์— ํ˜ธ์ถœ๋œ๋‹ค. @escaping ํ‚ค์›Œ๋“œ๋ฅผ ํด๋กœ์ € ์•ž์— ์ ์–ด ์‚ฌ์šฉํ•œ๋‹ค.

let completionHandler = () -> Void 
func havingEscapingClosure(completionHandler: @escaping () -> Void) {
    completionHandlers.append(completionHandler)
}
Glsme commented 1 year ago

Closure

func doSomething(closure: () -> ()) {
    closure()
}
wodyddml2 commented 1 year ago

Closure

Closure๋Š” ์ต๋ช… ํ•จ์ˆ˜์ด๋ฉฐ ํ•จ์ˆ˜์ด๊ธฐ์— 1๊ธ‰ ๊ฐ์ฒด ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๋ฐ˜ํ™˜ ํƒ€์ž…์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹จ์ถ• ์ธ์ž ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ Closure ์ฝ”๋“œ ๋ฐฉ์‹์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

Escaping Closure

์ „๋‹ฌ์ธ์ž๋กœ ๋ฐ›์€ ํด๋กœ์ €๊ฐ€ ๋งค์„œ๋“œ ์‹คํ–‰์ด ์ข…๋ฃŒ๋œ ํ›„์— ํ˜ธ์ถœ๋˜๋Š” ๊ฒฝ์šฐ, ํƒˆ์ถœ ํด๋กœ์ €๋ผ๊ณ  ํ•จ.