[iOS] URLSession dataTask์˜ Error (+ Result type)

GitHub ๋ ˆํฌ ํ•˜๋‚˜ ์†Œ๊ฐœํ•˜๊ณ  ์˜ค๋Š˜ ๊ธ€์„ ์‹œ์ž‘ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Swift Programming Language Evolution ์ด๋ผ๊ณ  Apple์—์„œ ์šด์˜ํ•˜๋Š” ๋ ˆํฌ์ž…๋‹ˆ๋‹ค. Swift ์–ธ์–ด์˜ ๋ฐœ์ „์„ ์œ„ํ•ด ๋ชจ๋‘ ์ œ์•ˆ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด์ž ๋‹ค์Œ Swift ์–ธ์–ด๊ฐ€ ์–ด๋–ค ๋ฐฉํ–ฅ์„ ๊ฐ€์ง€๊ณ  ๋ฐœ์ „ํ• ์ง€ ์•Œ ๋“ค์—ฌ๋‹ค ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜ dataTask์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” Error์˜ ์ข…๋ฅ˜์— ๋Œ€ํ•ด ๋‹ค๋ค„ ๋ณผ ์˜ˆ์ •์ธ๋ฐ ์ด์— ์•ž์„œ Result type์— ๋Œ€ํ•œ ์–˜๊ธฐ๋„ ํ•ด๋ณด๋ ค๊ตฌ์š”. SE-0235 ์—์„œ Swift ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— Result ํƒ€์ž…์ด ์ฒ˜์Œ ์†Œ๊ฐœ๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ๋‚˜ ๋น„๋™๊ธฐ API๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง€๋‹ˆ ๊ฐ„๋‹จํ•˜๊ณ  ๋ช…ํ™•ํ•œ ๋ฐฉ์‹์œผ๋กœ Error ์ฒ˜๋ฆฌ๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์–ด Swift ์ดˆ์ฐฝ๊ธฐ๋ถ€ํ„ฐ ์‚ฌ๋žŒ๋“ค์ด Result ํƒ€..

iOS 2021. 11. 19. 19:04
[Toy] Pixel Palette v2.0.0 ์—…๋ฐ์ดํŠธ ํšŒ๊ณ 

์ฒซ ๋ฐฐํฌ๋ฅผ ๋งˆ์น˜๊ณ  ์–ผ๋งˆ ์ง€๋‚˜์ง€ ์•Š์•„ v1.1.0๋ฅผ ์ œ์ถœํ–ˆ๋‹ค. v1.1.0 ์—์„œ๋Š” ๋‹ค๊ตญ์–ด ์ง€์›(์˜์–ด, ํ•œ๊ธ€)์„ ํ–ˆ๊ณ  iOS ์˜คํ”ˆ์นดํ†ก๋ฐฉ์—์„œ ์„ ๋ฐฐ ๊ฐœ๋ฐœ์ž ๋ถ„๋“ค์ด ์–˜๊ธฐ ํ•ด์ฃผ์‹  ์ ๋“ค์„ ๋ชจ๋‘ ๋ฐ˜์˜ํ–ˆ๋‹ค. ๊ฐ€๋ น pan gesture๋กœ๋งŒ picker view๋ฅผ ์›€์ง์ด๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ tap gesture๋„ ์ ์šฉํ•ด์„œ ๋” ํŽธํ•˜๊ฒŒ ์›€์ง์ผ ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๊ณ , ์ฒซ ํ™”๋ฉด์—์„œ ์‚ฌ์šฉํ•œ ์•„์ด์ฝ˜์ด(+ ๋ชจ์–‘์ด์—ˆ์Œ) ์–ด๋–ค action์„ triggerํ•˜๋Š” ๊ฒƒ ๊ฐ™์ด ๋Š๊ผˆ๋‹ค๋Š” ํ”ผ๋“œ๋ฐฑ์— ์•„์ด์ฝ˜ ๊ต์ฒด๋กœ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œ์ผฐ๋‹ค. ๋‚ด๊ฐ€ ๊ธฐํš, ๋””์ž์ธ, ๊ฐœ๋ฐœ๊นŒ์ง€ ๋‹ค ์ง์ ‘ ํ•œ ์ž‘์—…๋ฌผ์ด๋ผ ๋น„๋ก ๋‹จ์ˆœํ•ด ๋ณด์ผ์ง€๋ผ๋„ ์†Œ์ค‘ํ–ˆ๋‹ค. v1.1.0์„ ๋‚ด๋ณด๋‚ด๊ณ  ๋‚˜์„œ๋„ ๋ฟŒ๋“ฏํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ‰์ ์ด 1์ ์ด๋ผ๋‹ˆ. ๊ตณ์ด ํ‰์ ์„ ๋‚จ๊ธฐ๊ธฐ์œ„ํ•ด ์•ฑ ์Šคํ† ์—์„œ ๋ณ„ ํ•˜๋‚˜๋ฅผ ๋ˆŒ๋ €๋‹ค๋‹ˆ. ์–ด์ง€๊ฐ„ํžˆ ๋งˆ์Œ์— ์•ˆ..

[์ฑ…] ๋งˆ๋ฅดํฌ์Šค๋Š” ์ฒ˜์Œ์ž…๋‹ˆ๋‹ค๋งŒ

ํ•˜๊ณ  ์‹ถ์€ ๋ง์ด ๋งŽ์„์ˆ˜๋ก ๊ธ€์ด ์‚ฐ์œผ๋กœ ๊ฐ€๊ธฐ ๋งˆ๋ จ์ธ๋ฐ ํฐ์ผ์ด๋‹ค. ๋˜ ํ•˜๊ณ  ์‹ถ์€ ๋ง์ด ๋งŽ์€ ๊ฒƒ ๊ฐ™๋‹ค. ๊ธ€์ด ์‚ฐ์œผ๋กœ ๊ฐ€๋”๋ผ๋„ ์ฝ๋Š” ์‚ฌ๋žŒ์ด ์•Œ์•„์„œ ๊ฑธ๋Ÿฌ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ์‹ถ์€ ๋ง์„ ๋ฏธ๋ฆฌ ์ •๋ฆฌ๋ฅผ ํ•ด ๋†“์•„์•ผ๊ฒ ๋‹ค.(๋งค์šฐ ๋ถˆ์นœ์ ˆํ•œ ํŽธ) 1. ์–ด์ฉŒ๋‹ค ๋งˆ๋ฅดํฌ์Šค 2. ๋‹ค์‹œ ๋งŒ๋‚œ ์ฒญ์ทจ์ž (์Šคํ‘ผ Top 6?!!) 3. ๋งˆ๋ฅดํฌ์Šค๋Š” ์ฒ˜์Œ์ž…๋‹ˆ๋‹ค๋งŒ ์–ด์ฉŒ๋‹ค ๋งˆ๋ฅดํฌ์Šค ์š” ๊ทผ๋ž˜ ๋ช‡ ๋‹ฌ ๋™์•ˆ ํŠธ์œ„์น˜์—์„œ ๋‹ค์–‘ํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ์ฆ๊ธฐ๊ณ  ์žˆ๋‹ค. ์ƒ๋ฐฉ์„ ๊ผฌ๋ฐ•๊ผฌ๋ฐ• ์ฑ™๊ฒจ ๋ณผ ์ •๋„๋กœ ํŒฌ์ด ๋œ ์ŠคํŠธ๋ฆฌ๋จธ๋„ ์žˆ๊ณ , ๊ด€์‹ฌ์žˆ๋Š” ์ฃผ์ œ๋กœ ๋ฐฉ์†ก ํ•  ๊ฒฝ์šฐ ๋ฐฉ๋ฌธํ•˜๋Š” ์ŠคํŠธ๋ฆฌ๋จธ, ์œ ํŠœ๋ธŒ ํŽธ์ง‘๋ณธ์„ ๋” ์ž˜ ์ฑ™๊ฒจ๋ณด๋Š” ์ŠคํŠธ๋ฆฌ๋จธ๋„ ์ƒ๊ฒผ๋‹ค. ํ† ํฌ ๋ฐฉ์†ก๋ถ€ํ„ฐ ์—ญ์‚ฌ, ๊ฒฝ์ œ ๋ฐฉ์†ก๊นŒ์ง€ ๋”ฑํžˆ ๊ฐ€๋ฆฌ์ง€ ์•Š๋‹ค๋ณด๋‹ˆ ์ •๋ณด๋ฅผ ์Šต๋“ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ๋” ๋„“์–ด์ง„๊ฑด ํ™•์‹คํ•˜๋‹ค. ๋‹ค๋งŒ ํ‰์†Œ์— ๊ด€์‹ฌ ์—†๋˜ ๋ถ„์•ผ๋ฅผ ๊ท€๋กœ๋งŒ ..

SUEATY/๊ธฐ๋ก 2021. 11. 14. 22:40
[iOS] Multi-threading๊ณผ Concurrency(1) : Thread, Queue, Race Condition

ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ, ๋™์‹œ์„ฑ, ๋ณ‘๋ ฌ์„ฑ ๋“ฑ์€ iOS ๋ณด๋‹ค ๋” low-level๋กœ ๋“ค์–ด๊ฐ€ ์šด์˜์ฒด์ œ์™€ ๋ฐ€์ ‘ํ•œ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ธ€์€ ๊ถ๊ทน์ ์œผ๋กœ GCD์™€ Operation Queue๋ฅผ ๋‹ค๋ฃจ๊ณ  ์‹ถ์œผ๋‹ˆ iOS ๊ฐœ๋ฐœ ๊ด€์ ์— ๋งž๊ฒŒ ๊ธ€์„ ํ’€์–ด๋ณผ๊ฒŒ์š”~ Concurrency ๋™์‹œ์„ฑ์€ ์—ฌ๋Ÿฌ ์ž‘์—…๋“ค์„ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ์งˆ์ž…๋‹ˆ๋‹ค. ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด ์‹ฑ๊ธ€ ์ฝ”์–ด์—์„œ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ๋™์ž‘์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์ด๋‹ˆ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ '์ฒ˜๋Ÿผ' ๋ณด์ด๋Š” ์„ฑ์งˆ์ด์ฃ . ๋ฉ€ํ‹ฐ ์ฝ”์–ด ํ™˜๊ฒฝ์ด ํ•„์š”ํ•œ ๋ณ‘๋ ฌ์„ฑ(Parallelism)๊ณผ ์ž์ฃผ ๋น„๊ต๋˜๋Š” ๊ฐœ๋…์ด์ง€๋งŒ ์ด ๊ธ€์—์„œ๋Š” ๋‹ค๋ฃจ์ง€ ์•Š์„๊ฒŒ์š”! ์ž‘์—…๋“ค์€ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰์ด ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์— ๋น„์œ ํ•ด๋ณด์ž๋ฉด ์ฐจ = ์ž‘์—…, ์ฐจ์„  = ์Šค๋ ˆ๋“œ ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ฒ ๋„ค์š”. ๋ณด์‹œ๋‹ค์‹œํ”ผ ๋ฒ„์Šค์ „์šฉ์ฐจ๋กœ๋Š” ๋ปฅ ๋šซ๋ ค์žˆ๋Š” ๋ฐ˜๋ฉด ์ผ..

iOS 2021. 11. 7. 05:26