๐ 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. ์ด์ 1 2 3 4 ยทยทยท 6 ๋ค์