๋ชฉ๋ก๐Ÿ“ฑ๐ŸŽ iOS (62)

Bibi's DevLog ๐Ÿค“๐ŸŽ

[Swift Language Guide] Concurrency (async/await, task, actor)

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/concurrency/ ์œ„ ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ฒˆ์—ญํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๋™์‹œ์„ฑ : ๋น„๋™๊ธฐ ์ž‘์—… ์ˆ˜ํ–‰ํ•˜๊ธฐ. ๋ณ‘๋ ฌ(parallel) ๋˜๋Š” ๋น„๋™๊ธฐ(asynchronous) ์ฝ”๋“œ๋Š” ๋ณต์žก๋„ ์ฆ๊ฐ€๋ผ๋Š” ๋น„์šฉ์„ ๊ฐ€์ ธ์˜จ๋‹ค. Swift์—์„œ๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„ ๊ฒ€์‚ฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœ์ž์˜ ์˜๋„๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค - ์˜ˆ๋ฅผ ๋“ค์–ด actor๋ฅผ ์‚ฌ์šฉํ•ด mutable state์— ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. Swift๋Š” ์–ธ์–ด ์ˆ˜์ค€์—์„œ ๋น„๋™๊ธฐ ์ฝ”๋“œ์˜ ๋ฌธ์ œ๋ฅผ ์ปดํŒŒ์ผ ํƒ€์ž„์— ์žก์„ ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค. Swift์˜ ๋™์‹œ์„ฑ ๋ชจ๋ธ์€ ์“ฐ๋ ˆ๋“œ ์œ„์— ๊ตฌ์ถ•๋˜์ง€๋งŒ, ์“ฐ๋ ˆ๋“œ์™€ ์ง์ ‘ ์ƒํ˜ธ์ž‘์šฉํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. completion handl..

[iOS] Singleton ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์ด๋ž€ ๋ฌด์—‡์ด๊ณ , ๋‹จ์ ๊ณผ ๋Œ€์•ˆ์€ ๋ฌด์—‡์ธ๊ฐ€?

What Is a Singleton and How To Create One In Swift Are Singletons Bad ์ด ๊ธ€์€ ์œ„์˜ ๋‘ ๋ฌธ์„œ์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ง์ ‘ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.๐Ÿ˜ท ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ๋งค์šฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด์ง€๋งŒ, ์•ˆํ‹ฐํŒจํ„ด์œผ๋กœ ๊ณ ๋ ค๋˜์–ด์ง„๋‹ค. ๊ทธ ์ด์œ ๋ฅผ ์‚ดํŽด๋ณด์ž. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‹จ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ๋˜๋„๋ก ํ•˜๋Š” ํŒจํ„ด์ด๋‹ค. ํ”„๋กœ๊ทธ๋žจ์—์„œ ์–ด๋–ค ์‹œ์ ์—์„œ๋„ ๊ทธ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋Š” ๋”ฑ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์˜ ๋ชฉ์ ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ์• ํ”Œ์˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฐ์ฒด๋“ค์ด ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. // Shared URL Session let sharedURLSession = URLSession.shared // D..

๐Ÿ“ฑ๐ŸŽ iOS 2023. 2. 14. 23:04
[Apple Developer Docs] Choosing Between Structures and Classes (๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค ์‚ฌ์ด์—์„œ ์„ ํƒํ•˜๊ธฐ)

์›๋ณธ ๋ฌธ์„œ : Apple Developer Documentation ๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค ์‚ฌ์ด์—์„œ ์„ ํƒํ•˜๊ธฐ ๋ฐ์ดํ„ฐ์™€ ๋ชจ๋ธ ํ–‰๋™์„ ์–ด๋–ป๊ฒŒ ์ €์žฅํ• ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์š” ๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค๋Š” ๋‹น์‹ ์˜ ์•ฑ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ, ๊ทธ๋ฆฌ๊ณ  ํ–‰๋™๋“ค์„ ๋ชจ๋ธ๋งํ•˜๊ธฐ ์œ„ํ•œ ์ข‹์€ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋“ค์˜ ์œ ์‚ฌ์„ฑ์ด ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ์•ฑ์— ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ถ”๊ฐ€ํ•  ๋•Œ, ์–ด๋–ค ์„ ํƒ์ด ํ•ฉ๋ฆฌ์ ์ธ์ง€ ์„ ํƒํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ์•„๋ž˜์˜ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Objective-C ์ƒํ˜ธ์šด์šฉ์„ฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋ชจ๋ธ๋งํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋™์ผ์„ฑ์„ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๋ฉด, ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„์‚ฌํ•ญ๋“ค์„ ๊ณต์œ ํ•จ์œผ๋กœ์„œ ํ–‰๋™์„ ์ฑ„ํƒํ•˜๊ธฐ ์œ„..

[Swift Language Guide (5.7)] Structures and Classes ๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค

[Swift Language Guide (5.7)] Structures and Classes ๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค Structures and Classes - The Swift Programming Language (Swift 5.7) ๊ตฌ์กฐ์ฒด*์™€ *ํด๋ž˜์Šค ๋Š” ๋‹น์‹ ์˜ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์˜ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋˜๋Š” ๋‹ค๋ชฉ์ ์˜ ์œ ์—ฐํ•œ ๊ตฌ์กฐ๋“ค์ž…๋‹ˆ๋‹ค. ์ƒ์ˆ˜, ๋ณ€์ˆ˜, ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ์™€ ๊ฐ™์€ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•ด ๋‹น์‹ ์˜ ๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค์— ํ”„๋กœํผํ‹ฐ๋“ค๊ณผ ๋ฉ”์„œ๋“œ๋“ค์„ ๋”ํ•ด ๊ธฐ๋Šฅ์„ ๋”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค๊ณผ ๋‹ค๋ฅด๊ฒŒ, Swift๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํด๋ž˜์Šค๋‚˜ ๊ตฌ์กฐ์ฒด๋ฅผ ์œ„ํ•œ ๋ณ„๋„์˜ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋„๋ก ์š”๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Swift์—์„œ๋Š”, ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ๊ตฌ์กฐ์ฒด๋‚˜ ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•˜๊ณ , ๊ทธ ๊ตฌ์กฐ์ฒด๋‚˜ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์™ธ๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹ค..