๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS/iOS

[iOS ๋ฉด์ ‘์งˆ๋ฌธ]@escaping์ด๋ž€? (1) - ๊ฐœ๋…

by Fomagran ๐Ÿ’ป 2020. 11. 1.
728x90
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค!!

 

์˜ค๋Š˜ ์•Œ์•„๋ณผ ๋‚ด์šฉ Escaping Closure์ž…๋‹ˆ๋‹ค.

 

์˜ˆ์ „๋ถ€ํ„ฐ ์–ด๋–ค ๋ฉ”์†Œ๋“œ๋ฅผ ๋ณด๋ฉด ์ธ์ž๊ฐ’ ์•ž์— @escaping์ด๋ผ๊ณ  ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ๋ณธ ์ ์ด ์žˆ๋Š”๋ฐ ์ด๊ฒŒ ๋ฌด์Šจ ์—ญํ• ์„

 

ํ•˜๋Š”์ง€ ์ž์„ธํžˆ ์•Œ์ง€ ๋ชปํ•œ์ฑ„ ๋„˜์–ด๊ฐ”์—ˆ๋Š”๋ฐ์š”.

 

๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ํ•œ๋ฒˆ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

Swift Documentation


์šฐ์„  ๊ณต์‹๋ฌธ์„œ๋ฅผ ์š”์•ฝํ•˜๋ฉด  "ํ•จ์ˆ˜๋ฅผ ํƒˆ์ถœํ•  ์ˆ˜ ์žˆ๊ณ  ๊ฐ’์ด ๋ฐ˜ํ™˜๋œ ํ›„์— ๋ถˆ๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค " ๋ผ๊ณ  ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

์›๋ž˜ ํด๋กœ์ ธ๋Š” ์ธ์ž๊ฐ€ ํ•จ์ˆ˜ ๋ฐ–์—์„œ๋„ ์œ ํšจํ•œ ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

์™œ๋ƒํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ @noescape ์œผ๋กœ ์„ค์ •๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

(@noescape๋กœ ์„ค์ •๋œ ์ด์œ ๋Š” ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์ž๋™์ ์œผ๋กœ ํด๋กœ์ ธ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ์‰ฝ๊ฒŒ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.)

 

ํ•˜์ง€๋งŒ ์ด @escaping์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•จ์ˆ˜ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ€์„œ ๋ฐ˜ํ™˜๋œ ๋’ค์—๋„ ๋ถˆ๋ ค์งˆ ์ˆ˜ ์žˆ๊ณ  ์‹ฌ์ง€์–ด๋Š” ์ €์žฅ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ ๋„ ํ•˜๋Š”๋ฐ์š”.

 

์ด๊ฒƒ์€ ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ์— ์žˆ์–ด์„œ ๊ต‰์žฅํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. <- ์—ฌ๊ธฐ ์—์„œ ์ž์„ธํžˆ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Example


๊ณต์‹ ๋ฌธ์„œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์ด ํ•จ์ˆ˜๋ฐ–์— ์žˆ๋Š” ๋ฐฐ์—ด์— (completionHandlers) ํ•จ์ˆ˜์•ˆ์˜ ์ธ์ž๊ฐ’์ธ completionHandler๋ฅผ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

๊ทธ ๋‹ค์Œ์œผ๋กœ escaping์ด ์—†๋Š” ํ•จ์ˆ˜๋„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. 

 

์–ด๋–ค ํด๋ž˜์Šค์—์„œ ๊ฐ’์ด 10์ธ x ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ  escapingํ•˜๋Š” ํ•จ์ˆ˜์—” x๊ฐ’์„ 100์œผ๋กœ escaping์ด ์—†๋Š” ํ•จ์ˆ˜์—” x๊ฐ’์„ 200์œผ๋กœ

 

๋งŒ๋“ค์–ด์ฃผ๋Š” doSomething ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

 

์ด ํด๋ž˜์Šค๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ doSomething์„ ์‹คํ–‰ํ•œ ๋’ค x๋ฅผ ์ถœ๋ ฅํ•ด๋ณด๋ฉด 200์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

 

๋˜ํ•œ ์•„๊นŒ completionHandlers์— ์ €์žฅํ•ด๋‘์—ˆ๋˜ completion์„ ๋ถˆ๋Ÿฌ์™€์„œ ์‹คํ–‰ํ•œ ๋’ค x๋ฅผ ์ถœ๋ ฅํ•ด๋ณด๋ฉด 100์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

์ด๊ฒƒ์œผ๋กœ @escaping์„ ํ†ตํ•ด completion์„ ํƒˆ์ถœ์‹œ์ผœ ์™ธ๋ถ€์— ์ €์žฅํ•ด๋‘๊ณ  ์›ํ•  ๋•Œ ๋ถˆ๋Ÿฌ์™€ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ noescapeํ•จ์ˆ˜์— ํด๋กœ์ ธ๋ฅผ ์™ธ๋ถ€์— ์ €์žฅํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์—๋Ÿฌ๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค.

 

๋” ์‰ฌ์šด ์˜ˆ์ œ์™€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์–ด๋–ค ์‹์œผ๋กœ ํ•˜๋Š”์ง€ ์ž์„ธํžˆ ์•Œ๊ณ ์‹ถ์œผ์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ์—์„œ ์˜ํ™”API ์˜ˆ์ œ๋กœ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€