๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ Today I Learned32

[Swift] ๋„คํŠธ์›Œํฌ ํ†ต์‹  (3. URLSession) URLSession URLSession์€ ๋„คํŠธ์›Œํฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ๋ณด๋‚ด๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. URLSession์˜ ์ฃผ์š” ํŠน์ง• ๋น„๋™๊ธฐ์  ๋„คํŠธ์›Œํ‚น (Asynchronous Networking) URLSession์€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ, ๋„คํŠธ์›Œํฌ ์ž‘์—…์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์•ฑ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ์‘๋‹ต์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹ ์ง€์› URLSession์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋กœ๋“œํ•˜๊ฑฐ๋‚˜ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, JSON, ์ด๋ฏธ์ง€, ํŒŒ์ผ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ˆ™๋ จ ์ฑ•ํ„ฐ์—์„œ์˜ ์˜ˆ์ œ๋Š” JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์บ์‹œ์™€ ์ฟ ํ‚ค ๊ด€๋ฆฌ URLSession์€ ๋„คํŠธ์›Œํฌ ์‘๋‹ต์„ ์บ์‹ฑํ•˜๊ณ  ์ฟ ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ.. 2024. 1. 4.
[Swift] ๋„คํŠธ์›Œํฌ ํ†ต์‹  (2. REST API) ๋„คํŠธ์›Œํฌ ํ†ต์‹  REST API REST๋Š” HTTP ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์„ ์œ„ํ•œ ๊ทœ์น™์„ ์ •์˜ HTTP ๋ฉ”์„œ๋“œ (HTTP Methods) REST API์—์„œ๋Š” HTTP ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์›์„ ๋‹ค๋ฃฌ๋‹ค. HTTP ๋ฉ”์„œ๋“œ GET: ์ž์›์„ ์ฝ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ (ex. ์œ ์ €๋ฅผ ์กฐํšŒ) POST: ์ƒˆ๋กœ์šด ์ž์›์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ - ๋ฉฑ๋“ฑํ•˜์ง€ ์•Š์Œ (ex. ์œ ์ €๋ฅผ ์ƒ์„ฑ(๊ฐ€์ž…)) ๐Ÿ’ก๋ฉฑ๋“ฑ์„ฑ : ์—ฌ๋Ÿฌ๋ฒˆ ์š”์ฒญ(์‹œ๋„)ํ•ด๋„ ๋ชจ๋“  ๊ฒฐ๊ณผ๊ฐ’์ด ๋™์ผํ•œ ์„ฑ์งˆ PUT: ๊ธฐ์กด ์ž์›์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ - ๋ฉฑ๋“ฑํ•จ (ex. ์œ ์ €๋ฅผ ์ˆ˜์ •) DELETE: ์ž์›์„ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ (ex. ์œ ์ €๋ฅผ ์‚ญ์ œ(ํƒˆํ‡ด)) ์ž์› (Resources) REST API์—์„œ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ž์›์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค. ์ด๋Ÿฌํ•œ ์ž์›์€ ๊ณ ์œ ํ•œ.. 2024. 1. 4.
[Swift] ๋„คํŠธ์›Œํฌ ํ†ต์‹  (1. URL ๊ตฌ์„ฑ์š”์†Œ) ๋„คํŠธ์›Œํฌ ํ†ต์‹  URL ๊ตฌ์„ฑ์š”์†Œ ํ”„๋กœํ† ์ฝœ (Protocol) URL์€ ์ผ๋ฐ˜์ ์œผ๋กœ http:// ๋˜๋Š” https://์™€ ๊ฐ™์€ ํ”„๋กœํ† ์ฝœ๋กœ ์‹œ์ž‘ ์ด๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹  ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•œ๋‹ค. http://๋Š” ๋ณด์•ˆ ์—†๋Š” ํ†ต์‹ ์„, https://๋Š” SSL/TLS ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ๋œ ํ†ต์‹ ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋„๋ฉ”์ธ (Domain) ๋„๋ฉ”์ธ์€ API ์„œ๋ฒ„๊ฐ€ ํ˜ธ์ŠคํŒ…๋˜๋Š” ์„œ๋ฒ„์˜ ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, music.naver.com์€ API ์„œ๋ฒ„๊ฐ€ ์œ„์น˜ํ•œ ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ ์ฃผ์†Œ์ด๋‹ค. ํฌํŠธ (Port, ์˜ต์…˜) ํฌํŠธ ๋ฒˆํ˜ธ๋Š” ์„œ๋ฒ„์—์„œ API ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํฌํŠธ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ HTTP์˜ ๊ธฐ๋ณธ ํฌํŠธ๋Š” 80์ด๊ณ , HTTPS์˜ ๊ธฐ๋ณธ ํฌํŠธ๋Š” 443 (์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ๋žต๋  ์ˆ˜ ์žˆ๋‹ค.) ๊ฒฝ๋กœ (Path) ๊ฒฝ๋กœ๋Š” ์„œ๋ฒ„.. 2024. 1. 4.
[Swift] ARC(Automatic Reference Counting)๋ž€? ARC(Automatic Reference Counting) ๋ž€? Swift๋Š” ARC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Heap ์˜์—ญ์˜ ๊ฐ์ฒด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค. ARC๋Š” Heap ์˜์—ญ์˜ ๊ฐ์ฒด์— ๋Œ€ํ•œ Strong Reference(๊ฐ•ํ•œ ์ฐธ์กฐ) count๋ฅผ ์ถ”์ ํ•˜๊ณ , ๊ฐ์ฒด๊ฐ€ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๋•Œ (์ฐธ์กฐ count๊ฐ€ ์—†์„ ๋•Œ) ํ•ด๋‹น ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ํ•ด์ œํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. Strong Reference (๊ฐ•ํ•œ ์ฐธ์กฐ) Swift์—์„œ ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜๋Š” Strong Reference(๊ฐ•ํ•œ ์ฐธ์กฐ)๋ฅผ ํ•œ๋‹ค. ๊ฐ์ฒด์— ๋Œ€ํ•œ Strong Reference count๊ฐ€ ์ฆ๊ฐ€๋˜์–ด ์žˆ๋‹ค๋ฉด, ํ•ด๋‹น ๊ฐ์ฒด๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€๋œ๋‹ค. class Person { // Person์ด๋ผ๋Š” ์ฐธ์กฐ ํƒ€์ž…์˜ ํด๋ž˜์Šค var name: Str.. 2024. 1. 4.
[Swift] ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ Code ์˜์—ญ Code ์˜์—ญ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„ ์ปดํŒŒ์ผ๋œ ์†Œ์Šค ์ฝ”๋“œ์™€ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ช…๋ น์–ด๋“ค์ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. ์ด ์˜์—ญ์€ ์ฝ๊ธฐ ์ „์šฉ(Read-Only)์ด๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด์„œ ์ˆ˜์ •๋˜์ง€ ์•Š๋Š”๋‹ค. Data ์˜์—ญ Data ์˜์—ญ์€ ์ „์—ญ ๋ณ€์ˆ˜(global variables)์™€ ์ •์  ๋ณ€์ˆ˜(static variables), ์ƒ์ˆ˜(constants)๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์‹œ ํ• ๋‹น๋˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์œ ์ง€๋œ๋‹ค. Stack ์˜์—ญ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜๋˜๋Š” ์‹œ์ (์ปดํŒŒ์ผ ํƒ€์ž„)์— ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค. Stack ์˜์—ญ์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ํ•จ์ˆ˜์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜(local variables), ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜(par.. 2024. 1. 3.
[Swift] Alert ์•Œ๋ฆผ์ฐฝ ๋„์šฐ๊ธฐ Alert ์•Œ๋ฆผ์ฐฝ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• Alert ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ ์•ก์…˜์„ ์ƒ์„ฑ ๊ฐ์ฒด์— ์•ก์…˜์„ ์ถ”๊ฐ€ ํ™”๋ฉด์— ํ‘œํ˜„ 1. Alert ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ // ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ let alert = UIAlertController(title: "๊ฒฐ์ œ ์™„๋ฃŒ", message: "", preferredStyle: .alert) // perferedStyle // .alert : ์ค‘์•™์— ์ฐฝ์„ ๋„์›€ // .actionSheet : ๋ฐ‘์—์„œ ์ฐฝ์„ ๋„์›€ 2. ์•ก์…˜ ์ƒ์„ฑ let sucess = UIAlertAction(title: "ํ™•์ธ", style: .default) // { action in //print(" ") // } // style // .default : ๊ธฐ๋ณธ ํ˜•ํƒœ // .destructive : ๋นจ๊ฐ„์ƒ‰ ๊ธ€์”จ๋กœ ๊ฐ•์กฐ // .cancel.. 2023. 12. 27.