์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
BEST

์•จ๋Ÿฐ iOS Concurrency(๋™์‹œ์„ฑ) - ๋””์ŠคํŒจ์น˜ํ์™€ ์˜คํผ๋ ˆ์ด์…˜ํ์˜ ์ดํ•ด

๋™์‹œ์„ฑ(Concurrency)ํ”„๋กœ๊ทธ๋ž˜๋ฐ - iOSํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํ•„์š”ํ•œ ๋™๊ธฐ, ๋น„๋™๊ธฐ์˜ ๊ฐœ๋… ๋ฐ ๊ทธ๋ฅผ ํ™•์žฅํ•œ GCD ๋ฐ Operation์— ๊ด€ํ•œ ๋ชจ๋“  ๋‚ด์šฉ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๋ชจ๋ฐ”์ผ ์•ฑ ๊ฐœ๋ฐœ, ๊ฐœ๋ฐœ ยท ํ”„๋กœ๊ทธ๋ž˜๋ฐ] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • iOS ๋™์‹œ์„ฑ(Concurrency) ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • iOS์—์„œ ์ตœ์ ํ™”์— ๋Œ€ํ•œ ์ดํ•ด(์„ฑ๋Šฅ/๋ฐ˜์‘์„ฑ)

  • ๋น„๋™๊ธฐ(async)/๋™๊ธฐ(sync) ์ฒ˜๋ฆฌ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์— ๋Œ€ํ•œ ์ดํ•ด

  • iOS ๋””์ŠคํŒจ์น˜ํ(GCD)์— ๋Œ€ํ•œ ์ดํ•ด

  • ๋””์ŠคํŒจ์น˜ ๊ทธ๋ฃน/๋น„๋™๊ธฐ ๋””์ŠคํŒจ์น˜ ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์ดํ•ด

  • iOS ์˜คํผ๋ ˆ์ด์…˜ํ(OperationQueue)์— ๋Œ€ํ•œ ์ดํ•ด

  • GCD/Operation์„ ์ ์šฉํ•œ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์˜ ์˜ˆ์‹œ

  • GCD/Operation์— ๋Œ€ํ•œ A๋ถ€ํ„ฐ ~ Z๊นŒ์ง€

  • Thread-Safety์— ๋Œ€ํ•œ ์ดํ•ด

  • Thread-Safeํ•œ ๊ฐ์ฒด ์„ค๊ณ„์˜ ์ดํ•ด

  • ์ด ๋ชจ๋“  ๋‚ด์šฉ์„ ์‰ฝ๊ฒŒ(๊ทธ๋ฆผ์œผ๋กœ) ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ

๐Ÿ™‹๐Ÿปโ€โ™‚๏ธ ์ž๊ฐ€ ์ง„๋‹จํ‘œ

 

์ˆ˜์—… ํ›„์—๋Š” ์•„๋ž˜์˜ ๊ฐœ๋…๋“ค์— ๋Œ€ํ•ด ๋ช…ํ™•ํžˆ ์•Œ๊ณ , ์ดํ•ดํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋””์ŠคํŒจ์น˜ํ์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค. (Yes/No)
  • ๋””์ŠคํŒจ์น˜ํ์˜ ์ข…๋ฅ˜์™€ ์„œ๋น„์Šคํ’ˆ์งˆ(Qos)์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค. (Yes/No)
  • ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ Sync๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ด์œ ๋ฅผ ์•Œ๊ณ ์žˆ๊ณ , ๋ฐ˜๋“œ์‹œ Sync๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ์ฐจ์ด์ ์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค. (Yes/No)
  • ๋””์ŠคํŒจ์น˜ ๊ทธ๋ฃน์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ๊ณ ์žˆ๋‹ค. (Yes/No)
  • ๋””์ŠคํŒจ์น˜ ๊ทธ๋ฃน์—์„œ ๋น„๋™๊ธฐํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์ฃผ์˜ํ•ด์•ผํ•  ์ ์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์žˆ๋‹ค. (Yes/No)
  • ๋””์ŠคํŒจ์น˜ ์›Œํฌ ์•„์ดํ…œ์˜ ๊ฐœ๋…์„ ์•Œ๊ณ ์žˆ๊ณ , ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•ˆ๋‹ค. (Yes/No)
  • ๋””์ŠคํŒจ์น˜ ์„ธ๋งˆํฌ์–ด(Semaphore)์˜ ๊ฐœ๋…์„ ์•Œ๊ณ ์žˆ๊ณ , ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•ˆ๋‹ค. (Yes/No)
  • ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ, ์—ฌ๋Ÿฌ๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์— ๋Œ€ํ•ด ์ฃผ์˜ํ•ด์•ผํ•  ์ ์„ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค. (Yes/No)
  • ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ํ…Œ์ด๋ธ”๋ทฐ/์ปฌ๋ ‰์…˜๋ทฐ ํƒ€์ž…์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๋•Œ, ๋น„๋™๊ธฐ๊ฐœ๋…์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์˜ํ•ด์•ผํ•  ์ ์„ ๋ช…ํ™•ํžˆ ์•Œ๊ณ  ์žˆ๋‹ค. (Yes/No)
  • ๋””์ŠคํŒจ์น˜ํ๋ฅผ ์‚ฌ์šฉํ• ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ (์—ฌ๋Ÿฌ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ), ํŠนํžˆ ๊ฒฝ์Ÿ์ƒํ™ฉ(Race Condition)์— ๋Œ€ํ•ด ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ  ์žˆ๊ณ , TSan์‚ฌ์šฉ๋ฒ•(Thread Sanitizer Tool)์„ ์•Œ๊ณ  ์žˆ๋‹ค. (Yes/No)
  • Thread-safeํ•œ ์ฝ”๋“œ์˜ ์ž‘์„ฑ๋ฒ•์— ๋Œ€ํ•ด ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค. (Yes/No)
  • ๋””์ŠคํŒจ์น˜ํ์—์„œ ํ™•์žฅ๋œ ์˜คํผ๋ ˆ์ด์…˜(Operation)์˜ ๊ฐœ๋…, ๊ทธ๋ฆฌ๊ณ  ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์•Œ๊ณ ์žˆ๋‹ค. (Yes/No)
  • ์–ด๋–ค ๊ฒฝ์šฐ์— ๋””์ŠคํŒจ์น˜ํ๊ฐ€ ์•„๋‹Œ ์˜คํผ๋ ˆ์ด์…˜ํ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (Yes/No)
  • ๋น„๋™๊ธฐํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š”, ๋น„๋™๊ธฐ์˜คํผ๋ ˆ์ด์…˜(AsyncOperation)์— ์ฝ”๋“œ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค. (Yes/No)
  • ์˜คํผ๋ ˆ์ด์…˜์˜ ์ฃผ์š” ๊ธฐ๋Šฅ(์ž‘์—…์˜ ์ˆœ์„œ ์„ค์ •, ์ทจ์†Œ)์„ ์ž์œ ์ž์žฌ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (Yes/No)

 

 

๐Ÿ“ ๊ฐ•์˜๋ชฉ์ฐจ

 

(ํฌ๊ฒŒ GCD์™€ Operation๋ถ€๋ถ„์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. GCD์— ๋Œ€ํ•ด ์ž˜ ์ดํ•ดํ•˜๊ณ  ๊ณ„์‹œ๋”๋ผ๋„, GCD์—์„œ ๋ฐœ์ „๋œ ๊ฐœ๋…์ธ Operation(์ž‘์—… ํด๋ž˜์Šค)์— ๋Œ€ํ•ด์„œ๋Š” ์ƒ์†Œํ•˜์‹ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋ธ”๋กœ๊ทธ๋‚˜ ๊ฐ•์˜๋ณด๋‹ค ๋” ๋ช…ํ™•ํ•˜๊ณ  ์‰ฝ๊ฒŒ, ๊ฐ•์˜ ํ•œ ๋ฒˆ์— ๋ชจ๋“  ๊ฒƒ์„ ์ดํ•ดํ•˜์‹ค ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.)

 

 

๐Ÿ–ผ๏ธ ๊ทธ๋ฆผ์„ค๋ช… ๋ฐฉ์‹์˜ ์˜ˆ์‹œ

 

(์ˆ˜์—…์—์„œ ์“ฐ์ด๋Š” ๋‹ค์–‘ํ•œ ๊ทธ๋ฆผ ๋ฐ ๋„ํ‘œ ์„ค๋ช…๋ฐฉ์‹์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.)

 

 

๐ŸŒˆ ๊ฐ•์˜์—์„œ ์ œ๊ณต๋˜๋Š” ์ž๋ฃŒ 

 

์•„๋ž˜์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ž๋ฃŒ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

  1. GCD ๊ด€๋ จ ์ •๋ฆฌ PDF - 287์žฅ
  2. Operation ๊ด€๋ จ ์ •๋ฆฌ PDF - 89์žฅ
  3. GCD ๊ด€๋ จ ์„ค๋ช…์„ ์œ„ํ•œ ์ฝ”๋“œ(ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ ํŒŒ์ผ) - 19ํŽ˜์ด์ง€(์†Œ์ŠคํŒŒ์ผ ์ œ์™ธ)
  4. Operation ๊ด€๋ จ ์„ค๋ช…์„ ์œ„ํ•œ ์ฝ”๋“œ(ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ ํŒŒ์ผ) - 8ํŽ˜์ด์ง€(์†Œ์ŠคํŒŒ์ผ ์ œ์™ธ)
  5. iOS ํ”„๋กœ์ ํŠธ ํŒŒ์ผ - 8๊ฐœ
  6. ์ฐธ๊ณ  ์•„ํ‹ฐํด(2๊ฐœ)์— ๋Œ€ํ•œ ํ•ด์„๋ณธ

(์œ„์˜ ํด๋” ์•ˆ์˜ ์ž๋ฃŒ๋“ค์ด ๋ชจ๋‘ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.)

 

 

๐Ÿ™Œ ๊ฐ•์˜ ์ œ์ž‘์— ์ฐธ๊ณ ๋œ ์ž๋ฃŒ

 

์•„๋ž˜์˜ ์ž๋ฃŒ๋“ค์„ ์ฐธ๊ณ ํ•˜์˜€์ง€๋งŒ, ๊ทธ๋ฆผ ์„ค๋ช… ๋ฐฉ์‹์€ ๋ชจ๋‘ ์ง์ ‘ ์„ค๊ณ„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  1. ๋™์˜์ƒ๊ฐ•์˜(iOS Concurrency with GCD and Operations) - ๋ ˆ์ด์›ฌ๋”๋ฆฌ์น˜(raywenderlich) https://www.raywenderlich.com/3648-ios-concurrency-with-gcd-and-operations
  2. ์„œ์ (Concurrency by Tutorials) - ๋ ˆ์ด์›ฌ๋”๋ฆฌ์น˜(raywenderlich) https://store.raywenderlich.com/products/concurrency-by-tutorials
  3. ์•„ํ‹ฐํด(Operation and OperationQueue Tutorial in Swift๋ ˆ์ด์›ฌ๋”๋ฆฌ์น˜(raywenderlich) https://www.raywenderlich.com/5293-operation-and-operationqueue-tutorial-in-swift
  4. ์•„ํ‹ฐํด(The thread safety of lazy variables in Swift) https://medium.com/what-i-talk-about-when-i-talk-about-ios-developmen/the-thread-safet y-of-lazy-variables-in-swift-b20184ef5a38

 

 

๐Ÿ™‹๐Ÿปโ€โ™‚๏ธ ๊ฐ•์˜ ๋‚ด์šฉ์ด <๊ฐ•์˜ ์ œ์ž‘ ์ฐธ๊ณ ์ž๋ฃŒ>์™€ ๋งŽ์€ ์ฐจ์ด๊ฐ€ ์žˆ๋‚˜์š”?

 

์ •๋ง ๋งŽ์€ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ์ฐธ๊ณ  ์ž๋ฃŒ๋“ค๋งŒ์œผ๋กœ ๋‹จ์ˆœํžˆ ๋ฒˆ์—ญ ์ˆ˜์ค€์˜ ๊ฐ•์˜๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ๋‹ค๋ฉด ์ด๋Ÿฐ ๊ฐ•์˜๋ฅผ ๊ธฐํšํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ฃผ์ œ๋“ค์— ๋Œ€ํ•ด์„œ ํšจ์œจ์ ์ด๋ฉด์„œ ํšจ๊ณผ์ ์ธ ์„ค๋ช…, ์ง์ ‘์ ์ธ ๊ทธ๋ฆผ, ๋„ํ‘œ ๋“ฑ์„ ์ง์ ‘ ๋‹ค ์†์ˆ˜ PPT๋กœ ์ž‘์„ฑํ•˜์—ฌ์„œ, ์‹ค์ œ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ง๊ด€์ ์ธ ์ดํ•ด๋ฅผ ๋•๊ณ ์ž ์ตœ์„ ์˜ ์„ค๋ช… ๋ฐฉ๋ฒ•์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ๋„ ๋ง์”€๋“œ๋ ธ์ง€๋งŒ ์ฐธ๊ณ ์ž๋ฃŒ๋ฅผ 10๋ฒˆ ์ด์ƒ์”ฉ ๋ณด์•˜๊ณ  ๊ทธ ๋‚ด์šฉ๋“ค์„ ๋ชจ๋‘ ๋‹ค๋ฃจ๋ฉด์„œ๋„ ์„ค๋ช…์€ ํ›จ์”ฌ ์‰ฝ๊ณ  ๋‹ค์–‘ํ•œ ๊ทธ๋ฆผ์œผ๋กœ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๊ทธ๋ฆผ์˜ ๋‚ด์šฉ์€ ํ’€ํƒ€์ž„ 2๋‹ฌ์ด์ƒ์˜ ๊ธฐ๊ฐ„์„ ๊ฑฐ์ณ ์ง์ ‘ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ด๋ฏ€๋กœ, (ํ•ด์™ธ์ž๋ฃŒ ํฌํ•จ) ์–ด๋””์—์„œ๋„ ์ด๋Ÿฐ ๋ฐฉ์‹์˜ ์„ค๋ช… ๋ฐ ์ด๋ ‡๊ฒŒ ์ž์„ธํ•œ ์„ค๋ช…์€ ๋ณด์‹ค ์ˆ˜ ์—†์„ ๊ฑฐ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฐธ๊ณ ์ž๋ฃŒ(raywenderlich์˜ ๋™์˜์ƒ๊ฐ•์˜)์—์„œ ๋‹จ ํ•œ์ค„๋กœ โ€œlazy var์™€ ๊ด€๋ จํ•˜์—ฌ๋„ ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.โ€ ํ•˜๊ณ  ์ œ์‹œ๋œ ๋‚ด์šฉ์ด ์žˆ์—ˆ๋‹ค๋ฉด, lazy var์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ด์Šˆ๋“ค์„ ์ฐพ์•„์„œ ์ œ๊ฐ€ ์ง์ ‘ ์ •๋ฆฌํ•˜๊ณ , ๊ทธ๋ฆผ์œผ๋กœ ์ง๊ด€์ ์ธ ์ดํ•ด๋ฅผ ๋„์šฐ๋ฉฐ ํ•ด๊ฒฐ์ฑ…์„ ์ œ์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ฆผ(ํฐ ํ‹€)์„ ์ดํ•ดํ•˜๋ฉด ์ฝ”๋“œ๋Š” ์•„์ฃผ ์†์‰ฝ๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ทธ๋Ÿฐ ๋ช…์ œํ•˜์—, ์ตœ๋Œ€ํ•œ ๊ทธ๋ฆผ์„ ํ†ตํ•œ ์ดํ•ด ๋ฐ ์ฝ”๋“œ๋ฅผ ํ†ตํ•œ ํ™œ์šฉ์œผ๋กœ ๋ฐธ๋Ÿฐ์Šค๋ฅผ ์œ ์ง€ํ•˜๋ ค๊ณ  ํ•˜์˜€๊ธฐ์— ์ฐธ๊ณ  ์ž๋ฃŒ๋“ค๊ณผ๋Š” ์—„์ฒญ๋‚œ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ  ์ž๋ฃŒ๋“ค๊ณผ ๋น„๊ตํ•˜์—ฌ ํ›จ์”ฌ ์ž์„ธํ•˜๊ณ , ์ง๊ด€์ ์ด๊ณ  ํ’๋ถ€ํ•œ ์ž๋ฃŒ, ๊ทธ๋ฆฌ๊ณ  ์ผ๊ด€์„ฑ์žˆ๋Š” ์‰ฌ์šด ์„ค๋ช…์ด ๋ช…ํ™•ํ•œ ์ฐจ๋ณ„์ ์ด๋ผ๊ณ  ๋ง์”€๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

 

 

๐Ÿ  ์ œ๊ณต๋˜๋Š” ์ฝ”๋“œ(code) ๊ด€๋ จ

 

ํ•ด๋‹น ์ฃผ์ œ์™€ ๊ด€๋ จํ•ด ์ดํ•ด๋ฅผ ๋•๊ณ ์ž ์ฝ”๋“œ ํŒŒ์ผ์ด ์ œ๊ณต๋˜๊ณ , ์ˆ˜์—… ๋‚ด์šฉ์—์„œ๋„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ณต๋˜๊ณ  ์žˆ๋Š” ์ฝ”๋“œ๋Š” ๋ผ์ด์„ผ์Šค๊ฐ€ ํ—ˆ๋ฝํ•˜๋Š” ๋ฒ”์œ„๋‚ด์—์„œ ๋Œ€๋ถ€๋ถ„ ๋ ˆ์ด์›ฌ๋”๋ฆฌ์น˜(raywenderlich)์˜ GCD๋™์˜์ƒ ๊ฐ•์˜์—์„œ ์ œ๊ณต๋˜๋Š” ์ฝ”๋“œ์˜ ๋Œ€๋ถ€๋ถ„์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ์œผ๋ฉฐ(์ฑ„ํƒ๋ถ€๋ถ„์€ ๋ช…์‹œ๋˜์–ด ์žˆ์Œ) ๋ผ์ด์„ผ์Šค๊ฐ€ ํ—ˆ๋ฝ๋˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„(๋ ˆ์ด์›ฌ๋”๋ฆฌ์น˜ ์„œ์ ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ฝ”๋“œ)์— ๋Œ€ํ•ด์„œ๋Š” ์ฝ”๋“œ๋ฅผ ์ œ๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•˜๊ณ ,  ํฐ ํ‹€์—์„œ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„์€ ์œ ์‚ฌํ•˜๊ฒŒ ์ž‘์„ฑ๋˜์–ด ์ œ๊ณต๋˜๊ณ  ์žˆ๋Š” ์ฝ”๋“œ์— ๋Œ€ํ•œ ์‹ ๋ขฐ์„ฑ์„ ํ™•๋ณดํ•˜๊ณ ์ž ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

 

๋˜ํ•œ, ์ œ๊ณตํ•ด ๋“œ๋ฆฌ๋Š” ์ฝ”๋“œ์˜ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ์ˆœ์„œ๋ฐฐ์น˜๋ฅผ ๋ฐ”๊พธ๊ณ , ๋” ์ž์„ธํ•œ ์„ค๋ช…์„ ์œ„ํ•œ ์ฝ”๋“œ๋“ค๋„ ๋‹ค์ˆ˜ ์ถ”๊ฐ€ํ•ด ๋‹ค์–‘ํ•œ ์˜ˆ์‹œ์™€ ํ•จ๊ป˜ ๋ณธ ์ˆ˜์—… ๋‚ด์šฉ์˜ ์ดํ•ด๋ฅผ ๋•๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๐Ÿค” ์ˆ˜์—…์˜ ๊ฐ€๊ฒฉ ์ฑ…์ • ๊ด€๋ จ

 

๋‹จ์ผ์ฃผ์ œ์— ๋Œ€ํ•ด ์กฐ๊ธˆ์€ ๋†’์€ ๊ฐ€๊ฒฉ์œผ๋กœ ์ธก์ •์ด ๋˜์–ด์žˆ์–ด ์˜์•„ํ•ด ํ•˜์‹ค ์ˆ˜ ์žˆ์œผ๋‚˜ ์ •๋ง ๋งŽ์€ ๋‚ด์šฉ์ด ๋‹ด๊ฒจ์ ธ ์žˆ์–ด ๊ฐ€๊ฒฉ ๋Œ€๋น„ ํ›จ์”ฌ ๋†’์€ ๋งŒ์กฑ๊ฐ์„ ์–ป์œผ์‹ค ๊ฒƒ์ž„์„ ๋ง์”€๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ณธ ๋‚ด์šฉ์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์ง์ ‘ ์ž‘์„ฑํ•œ PDF์ž๋ฃŒ๊ฐ€ GCD ๊ด€๋ จ 287์žฅ, Operation ๊ด€๋ จ 89์žฅ์œผ๋กœ ์ด 376ํŽ˜์ด์ง€์˜ ์ž๋ฃŒ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.  (์‹ค์ œ ์ œ๊ฐ€ ๋™์˜์ƒ ๊ฐ•์˜ ๋‚ด์—์„œ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๋Š” ์ฝ”๋“œ ์ œ์™ธ PPT 830์žฅ ์ •๋„๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.)

 

GCD/Operation๊ณผ ๊ด€๋ จํ•ด ํ•ด์™ธ์ž๋ฃŒ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ๋ชจ๋‘ ๋‹ค๋ฃจ๊ณ  ์žˆ์œผ๋ฉฐ, ๋ณธ ์ˆ˜์—… ๋‚ด์šฉ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ทธ๋ฆผ ๋ฐ ๋„ํ‘œ๋Š” ์ œ๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๋ณธ ๊ฐ•์˜๋ฅผ ์œ„ํ•ด ์ƒ๋‹นํžˆ ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์ด ๋“ค์–ด๊ฐ”๊ณ , ๊ทธ๋งŒํผ ํ–ฅํ›„ ๊ฐœ๋ฐœ์ž์˜ ์„ฑ์žฅ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ค‘์š”ํ•œ ์ฃผ์ œ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ์—, (์ œ ๊ฐœ์ธ์ ์ธ ๊ด€์ ์—์„œ) โ€œ์ด๋Ÿฐ ์ž๋ฃŒ, ์ด๋Ÿฐ ๊ฐ•์˜๊ฐ€ ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹คโ€ ๋ผ๋Š” ๊ธฐ์ค€์—์„œ ๊ธฐํšํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง„ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. 

 

๋˜ ๊ฐœ์ธ์ ์œผ๋กœ ์ƒ๊ฐํ•˜๊ธฐ์—, ๋น„์šฉ์„ ๋‚ด๊ณ  ๊ฐ•์˜ ๋“ฃ๋Š” ๊ฒฐ์ •์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์„ ๊ตํ™˜ํ•˜๋Š” ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋น„์šฉ ๋Œ€๋น„ ํ•ด๋‹น ์ฃผ์ œ์— ๋Œ€ํ•œ ๊ณต๋ถ€ ์‹œ๊ฐ„์„ ์•„๋ผ์‹œ๋Š” ๋ฐ๋Š” ์ถฉ๋ถ„ํ•œ ์—ญํ• ์„ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ, ์‹œ๊ฐ„์„ ์•„๋ผ์‹œ๊ณ  ๋” ๋†’์€ ๋งŒ์กฑ์„ ์–ป์–ด๊ฐ€์‹œ๊ธธ ํ•˜๋Š” ๋ฐ”๋žจ์ž…๋‹ˆ๋‹ค. ๊ฐ€๊ฒฉ๋ณด๋‹ค ๋” ๋†’์€ ๋งŒ์กฑ์„ ๋“œ๋ฆฌ๊ธฐ์— ์ถฉ์‹คํ•œ ๋‚ด์šฉ์œผ๋กœ ๋ณด๋‹ตํ•˜๋„๋ก ํ•˜๊ฒ ์œผ๋ฉฐ, ์ด๋Ÿฌํ•œ ์ ์„ ๊ฐ์•ˆํ•ด์ฃผ์‹œ๊ธธ ์ •์ค‘ํžˆ ๋ถ€ํƒ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ^^

 

 

๐Ÿ’Œ ๊ฐ•์˜ ๋‚ด์šฉ ๋ผ์ด์„ผ์Šค ๊ด€๋ จ

 

๋ณธ ๊ฐ•์˜์˜ ๋‚ด์šฉ๋“ค์€, ์ œ๊ฐ€ ์กฐ๊ธˆ์ด๋ผ๋„ ๊ทธ๋ฆผ ๋“ฑ์„ ์ฐธ๊ณ ํ•œ ๊ฒฝ์šฐ์— PDF์— ๊ด€๋ จ URL์ฃผ์†Œ๊ฐ€ ๋‚จ๊ฒจ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ž๋ฃŒ๋Š” ์ œ๊ฐ€ ์ž‘์„ฑํ•œ ์ž๋ฃŒ์ด๊ธฐ์—, ๋ถ€๋ถ„๋ณ„๋กœ ๊ฐ•์˜์˜ ์„ค๋ช…๋ฐฉ์‹์„ ์ฐธ๊ณ ํ•˜์—ฌ ๋ธ”๋กœ๊ทธ ๋“ฑ์— ์ •๋ฆฌํ•˜์‹ค ๋•Œ๋Š” ๋ณธ ๊ฐ•์˜์˜ ์ฃผ์†Œ๋ฅผ ๋‚จ๊ฒจ์ฃผ์‹œ๊ธธ ์ •์ค‘ํ•˜๊ฒŒ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ๋ณธ ๊ฐ•์˜์˜ ์ „๋ฐ˜์ ์ธ ๋‚ด์šฉ์„ ๋ธ”๋กœ๊ทธ์— ๋‹ค ๋‹ด๋Š” ๊ฒƒ๊ณผ ๊ฐ•์˜์ž๋ฃŒ๋กœ ์“ฐ์ด๋Š” PDFํŒŒ์ผ์˜ ๊ณต์œ ๋Š” ์–ด๋– ํ•œ ๊ฒฝ์šฐ์—๋„ ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค.

 

 

 

๐Ÿ‘€ ๊ฐ•์˜ ๋‚ด์šฉ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ œ๊ณต

 

์ˆ˜๊ฐ•์„ ๊ฒฐ์ •ํ•˜์‹œ๊ธฐ ์ „์—, ๊ฐ•์˜ ์Šคํƒ€์ผ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ฏธ๋ฆฌ ํ™•์ธํ•ด ๋ณด์‹ค ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  • (์„น์…˜ 0. 1.GCD/Operation์— ์•ž์„œ)์™€ ๊ด€๋ จ๋œ 1์‹œ๊ฐ„ ๊ฐ€๋Ÿ‰์˜ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
  • (์„น์…˜ 10. 1. Operation์— ์•ž์„œ)์™€ ๊ด€๋ จ๋œ 5๋ถ„ ๊ฐ€๋Ÿ‰์˜ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

 

 

๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ์ œ๊ณต๋˜๋Š” ๊ฐ•์˜๋“ค์„ ์‚ดํŽด๋ณด์‹œ๊ณ  ์ˆ˜๊ฐ•์„ ๊ฒฐ์ •ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. :)

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • Swift์–ธ์–ด๋ฅผ ์กฐ๊ธˆ ์ตํžˆ์‹  ๋ถ„

  • iOS์—์„œ ๋™๊ธฐ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์„ ์ตํžˆ์‹œ๊ณ  ์‹ถ์œผ์‹  ๋ถ„

  • GCD(Grand Central Dispatch)๋””์ŠคํŒจ์น˜ํ์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ๊ณ ์‹ถ์œผ์‹  ๋ถ„

  • ๋””์ŠคํŒจ์น˜ ๊ทธ๋ฃน์— ๋Œ€ํ•ด ์•Œ๊ณ ์‹ถ์œผ์‹  ๋ถ„

  • Operation(์˜คํผ๋ ˆ์ด์…˜)/OperationQueue(์˜คํผ๋ ˆ์ด์…˜ํ)์— ๋Œ€ํ•ด ์•Œ๊ณ ์‹ถ์œผ์‹  ๋ถ„

  • Thread-safety๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ๊ณ  ์‹ถ์œผ์‹  ๋ถ„

  • ์ดˆ ~ ์ค‘๊ธ‰ iOS๊ฐœ๋ฐœ์ž

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Swift์–ธ์–ด์— ๋Œ€ํ•œ ์ดํ•ด

  • iOSํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•œ ์ดํ•ด

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

6,993

๋ช…

์ˆ˜๊ฐ•์ƒ

635

๊ฐœ

์ˆ˜๊ฐ•ํ‰

278

๊ฐœ

๋‹ต๋ณ€

5.0

์ 

๊ฐ•์˜ ํ‰์ 

7

๊ฐœ

๊ฐ•์˜

iOS๊ฐœ๋ฐœ์ž ์•จ๋Ÿฐ์ž…๋‹ˆ๋‹ค.
https://www.youtube.com/@allen_ios

์ œ๊ฐ€ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๊ฒช์—ˆ๋˜ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ์‰ฝ๊ฒŒ ํ’€์–ด๋‚ด์–ด
์ง€์‹์„ ๊ณต์œ ํ•  ์ˆ˜์žˆ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ ์‹ถ์Šต๋‹ˆ๋‹ค.

์‰ฌ์šด ์ฃผ์ œ๋กœ ๋น ๋ฅธ ์‹œ๊ฐ„ ์•ˆ์— ๊ฒ‰ํ•ฅ๊ธฐ ์‹์œผ๋กœ ์‰ฝ๊ฒŒ๋งŒ ๊ฐ€๋ฅด์น˜๋Š” ๊ฐ•์˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์—๋Š” ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๊ฐ•์˜๋Š” ์–ผ๋งˆ๋“ ์ง€ ๋น ๋ฅด๊ฒŒ ์ฐ์–ด๋‚ด๋“ฏ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, ๊ฒฐ๊ตญ "์ข‹์€ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅ"ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋งŒํผ ์ด๋ก ์ ์ธ ๊ธฐ๋ฐ˜์˜ ๋ฐ‘๊ฑฐ๋ฆ„์ด ํƒ„ํƒ„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋ฏฟ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์‰ฌ์šด ๊ฐ•์˜๋ณด๋‹ค๋Š”, ์ข‹์€ ๊ฐœ๋ฐœ์ž(๋์ž„์—†์ด ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž)๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด
๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•˜๋Š” ์–ด๋ ค์šด ๋‚ด์šฉ๊นŒ์ง€๋ฅผ ์ตœ๋Œ€ํ•œ ์‰ฝ๊ฒŒ, ๊ทธ๋ฆฌ๊ณ  ์ง๊ด€์ ์œผ๋กœ ์•Œ๋ ค๋“œ๋ฆฌ๋Š” ๊ฒƒ.
๊ทธ๋ž˜์„œ ์ œ๊ฐ€ ์•„๋‹Œ ์—ฌ๋Ÿฌ๋ถ„ ์Šค์Šค๋กœ ๊ณ ๋ฏผ/์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ‘๊ฑฐ๋ฆ„์„ ๋งŒ๋“ค์–ด ๋“œ๋ฆฌ๋Š” ๊ฒƒ์„ ์ €์˜ ๊ฐ•์˜ ๋ชฉํ‘œ๋กœ ์‚ผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ € ์Šค์Šค๋กœ๋„ ๋‚ด์ผ์€ ๋” ์ข‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์ž๋Š” ๋ชจํ† ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋งŒํผ
์ œ๊ฐ€ ๊ณ ๋ฏผ ํ–ˆ๋˜ ๋‚ด์šฉ๋“ค์„ ๊นŠ์ด์žˆ๊ฒŒ ์ „๋‹ฌ ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.


๐Ÿ‘‡๐Ÿป๋ฌธ์˜๋Š” ์•„๋ž˜์˜ ์ด๋ฉ”์ผ๋กœ ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

we.love.code.allen@gmail.com


์–ธ์–ด: Swift(์Šค์œ„ํ”„ํŠธ), Python, Java, C#

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

32๊ฐœ โˆ™ (8์‹œ๊ฐ„ 9๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!