[ iOS ] ๋„คํŠธ์›Œํฌ ํ†ต์‹  _ Rest API
ยท
iOS_Developer/iOS
์ด ๊ธ€์€ API๊ฐ€ ๋ญ”์ง€ ๋‹ค์‹œํ•œ๋ฒˆ ์ƒ๊ฐํ•ด๋ณด๊ณ  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ ํ•ด๋ณด๋ฉฐ ๊ฐ๊ฐ์˜ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ค ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋ฉฐ ์ ์€ ๊ธ€์ด๋‹ค.    1. API๋ž€ ๋ฌด์—‡์ธ๊ฐ€?API(Application Programming Interface) =  ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„œ๋กœ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ• 1 - 1. API์˜ ์žฅ์  1. ์žฌ์‚ฌ์šฉ์„ฑ: ํ•œ ๋ฒˆ ๊ฐœ๋ฐœ๋œ API๋Š” ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์žฌ์‚ฌ์šฉ๊ฐ€๋Šฅ,  ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์„ ์ ˆ์•ฝ 2. ๋ชจ๋“ˆํ™”: API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋Šฅ์„ ๋ชจ๋“ˆํ™”ํ•  ์ˆ˜ ์žˆ์–ด ์œ ์ง€๋ณด์ˆ˜์™€ ํ™•์žฅ์ด ์šฉ์ดํ•จ 3. ์ƒํ˜ธ์šด์šฉ์„ฑ: ์„œ๋กœ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์‹œ์Šคํ…œ์ด ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ณต์œ ์™€ ํ˜‘์—…์„ ์ด‰์ง„ํ•จ 4. ๋ณด์•ˆ์„ฑ: API๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ, ์ธ์ฆ๊ณผ ๊ถŒํ•œ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค...
๐ŸŽ Swift ๋„คํŠธ์›Œํฌ ํ†ต์‹  [ feat. URLSession , URLSessionTask ]
ยท
iOS_Developer/iOS
๐ŸŽ Swift ๋„คํŠธ์›Œํฌ ํ†ต์‹  [ feat. URLSession , URLSessionTask ]๐Ÿ URLSessioniOS ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ http ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๋ฉฐ Request์™€ Response ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.URLSession์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ URLSessionTask๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ํ•˜๊ณ , Delegate๋กœ ๋„คํŠธ์›Œํฌ์˜ ๊ณผ์ •์„ ํ™•์ธํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค.URLSession์€ ๋„คํŠธ์›Œํฌ ๊ด€๋ จ ํด๋ž˜์Šค๋กœ URL๊ตฌ์กฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์—…๋กœ๋“œ ํ•˜๋Š” API๋ฅผ ์ œ๊ณตํ•œ๋‹ค์•ฑ์ด ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ค‘๋‹จ๋œ ๋™์•ˆ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์ˆ˜ํ–‰์ธ์ฆ์„ ์ง€์›ํ•˜๊ณ  ๋ฆฌ๋””๋ ‰์…˜ ๋ฐ ์ž‘์—… ์™„๋ฃŒ์™€ ๊ฐ™์€ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ๐Ÿ€ URLSession ์˜ ์†์„ฑURLSession์€ configuration์ด๋ผ๋Š” ์†์„ฑ 3๊ฐ€์ง€๋ฅผ ๊ฐ€์ง„๋‹ค..d..
[ iOS ] ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ (Code, Data, Stack, Heap)
ยท
iOS_Developer/iOS
๐ŸŽ iOS ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ (Code, Data, Stack, Heap)1. ๐Ÿ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์šด์˜์ฒด์ œ(OS)๋Š” ๋ฉ”๋ชจ๋ฆฌ(RAM)์— ์ด ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•œ ๊ณต๊ฐ„์„ ํ• ๋‹น๐Ÿ€ 1-1. ์ฝ”๋“œ(Code) ์˜์—ญ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๊ธฐ๊ณ„์–ด ํ˜•ํƒœ๋กœ ์ €์žฅ๋จ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฒฐ์ •, ์ค‘๊ฐ„์— ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋„๋ก Read - Only ํ˜•ํƒœ๋กœ ์ €์žฅ์ปดํ“จํ„ฐ๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋ฐ‘๋‹จ์˜ ์–ธ์–ด์ฝ”๋“œ ์˜์—ญ ์ตœ์ ํ™”: ํ˜„๋Œ€ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ฝ”๋“œ ์˜์—ญ์„ ์ตœ์ ํ™”ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฝ”๋“œ ์ธ๋ผ์ธํ™”, ๋ฃจํ”„ ๋ณ€ํ™˜ ๋“ฑ ๊ธฐ์ˆ  ์‚ฌ์šฉ๐Ÿ€ 1-2. ๋ฐ์ดํ„ฐ(Data) ์˜์—ญ์ „์—ญ๋ณ€์ˆ˜, static ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋จํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘๊ณผ ๋™์‹œ์— ํ• ๋‹น, ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ๊ฐ€ ๋˜์–ด์•ผ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ์‹คํ–‰๋„์ค‘ ๋ณ€์ˆ˜๊ฐ’์ด ๋ณ€๊ฒฝ ๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ Read-Write๋กœ ์ง€์ •student..
๋™๊ธฐ(Synchronous) vs ๋น„๋™๊ธฐ(Asynchronous)
ยท
iOS_Developer/iOS
๐ŸŽ 1. ๋™๊ธฐ(Synchronous) vs ๋น„๋™๊ธฐ(Asynchronous) ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋™๊ธฐ(Synchronous) ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋น„๋™๊ธฐ(Asynchronous) ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.๋™๊ธฐ ๋ฐฉ์‹์€ ์ž‘์—…์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐ˜๋ฉด, ๋น„๋™๊ธฐ ๋ฐฉ์‹์€ ์ž‘์—…์ด ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ์–ด ๋ณด๋‹ค ํšจ์œจ์ ์ธ ์ž‘์—… ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.๐Ÿ 1. ๋™๊ธฐ(Synchronous) ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ์ž‘์—…์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ด์ „ ์ž‘์—…์ด ์™„๋ฃŒ๋œ ํ›„์— ๋‹ค์Œ ์ž‘์—…์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์ด ์ฝ”๋“œ์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ์ง„ํ–‰๋˜๋ฉฐ, ํ•œ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ์ž‘์—…์€ ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค.๋™๊ธฐ ๋ฐฉ์‹์˜ ์žฅ๋‹จ์ ์žฅ์ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ ๊ตฌ์กฐ: ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด ์ด..