HTTP ํ๋กํ ์ฝ์ด๋? HTTP ํ๋กํ ์ฝ์ด๋ "HyperText Transfer Protocol"์ ์ค์๋ง๋ก ์น์์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ธฐ ์ํ ๊ท์ฝ ๋๋ ํ๋กํ ์ฝ์
๋๋ค. ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ํ์ดํผ ๋ฌธ์๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ ์ฌ์ฉ์ด ๋๋๋ฐ์! ์ด๋, ํด๋ผ์ด์ธํธ๋ ์น์ฌ์ดํธ๋ฅผ, ์๋ฒ๋ ์๋ฒ ์ปดํจํฐ๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ผ์! ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ฉด, ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต์ ํ๋ ์์ฒญ/์๋ต ํํ๋ก ๋ฐ์ดํฐ ์ ๋ฌ์ด ์ด๋ฃจ์ด์ ธ์. ๋ํ HTTP๋ ์ด๋ฏธ์ง, ์์, ์์ฑ, ํ์ผ JSON ๋ฑ ๋ชจ๋ ํํ์ ๋ฐ์ดํฐ๋ฅผ ํต์ ํ ์ ์์ต๋๋ค. HTTP๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋น์ฐ๊ฒฐ์ฑ์ ๊ฐ์ง๋๋ค. ๋น์ฐ๊ฒฐ์ฑ์ด๋ผ๋ ๊ฒ์ ์ ์ ๋ณด๋๋ ๋ฐ์ดํฐ์ ํ์ ๋ณด๋๋ ๋ฐ์ดํฐ ๊ฐ์ ์ฐ๊ด์ฑ์ด ์ ํ ์๋ค๋ ๊ฒ์ด์์! ๊ฐ ์์ฒญ๋ง๋ค ๋ฐ์ดํฐ๊ฐ ๋
๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌ๋๊ธฐ ๋..
์ค๋์ ARC ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๋ํด์ ๊ณต๋ถํด ๋ณผ๊น ํฉ๋๋ค! ๊ทธ๋ผ ์์ํด ๋ณผ๊น์?! โจ ์ค์ํํธ๋ ARC ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ํ ์์ญ์์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ์.. ๊ทธ๋ ๋ค๋ฉด ํ ์์ญ์ด ๋์ฒด ๋ญ๊ธธ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌ๋ฅผ ํด์ฃผ์ด์ผ ํ ๊น์?! ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ ์ค Heap ์์ญ Heap ์์ญ์ ๋ฐํ์ ์ค ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ํ์ํ ๊ฒฝ์ฐ์ ๋์ ์ผ๋ก ํ ๋น๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ณณ์
๋๋ค. ๊ทธ๋ผ ๋์ ํ ๋น์ด ๋ญ๋ฐ์?! ๋์ ํ ๋น์ด๋ ์คํ ์์ญ์ฒ๋ผ ์ ํด์ง ๊ณณ์ ๋ฐ์ดํฐ ๋ฑ๋ฑ ๋ค์ด๊ฐ๊ณ ๋์ค๋ ๊ฒ์ด ์๋๋ผ ๋ฉ๋ชจ๋ฆฌ์ ๋น์์ ธ ์๋ ๊ณต๊ฐ์ ์ฐพ์์ ํฌ๊ธฐ๋ ์์กด๊ธฐ๊ฐ์ ์ ํ์ฌ ํ ๋นํ ์ ์๋ ๋ฐฉ๋ฒ์
๋๋ค. Heap ์์ญ์๋ ์ฐธ์กฐ ํ์
์ ๋ฐ์ดํฐ๋ง ์ ์ฅ์ด ๋ฉ๋๋ค. ๋ฐํ์ ์ค ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ํ์ํ ๊ฒฝ์ฐ Heap ์์ญ์ ์ ์ฅ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋์ ์ผ๋ก ํ ๋น ์ฐธ..
์๋
ํ์ธ์! ์ค๋์ split๊ณผ components์ ์ฐจ์ด์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. split์ components๋ ๋ฌธ์์ด์ ํน์ ๋ฌธ์์ด์ ๊ธฐ์ค์ผ๋ก ๋๋ ์ ์๋ ๋ฌธ์์ด ๋ฌธ๋ฒ์ด์์. ์ฐ์ split์ components์ ์ฐจ์ด๋ฅผ ๋น๊ตํ๊ธฐ ์ ์ ๊ฐ๊ฐ์ ์ ์์ ๋งค๊ฐ๋ณ์๋ค์ ์ญํ ์ ์ดํด๋ด
์๋ค. Split func split( separator: String, maxSplits: Int = .max, omittingEmptySubsequences: Bool = true ) -> [Substring] split๋ Swift Standard Library ์ ํฌํจ์ด ๋์ด์์ด์, import ์์ด๋ ์ฌ์ฉํ ์ ์๋ ๋ฌธ๋ฒ์
๋๋ค! split๋ separator, maxSplits, omittingEmptySubseque..
์ค๋์ ๊ณ ์ฐจํจ์ map๊ณผ compactMap, flatMap์ ๋ํด ์์๋ด
์๋ค! ๊ณ ์ฐจํจ์๋ ํจ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ๊ฑฐ๋ ๋ฆฌํด๊ฐ์ผ๋ก ํจ์๋ฅผ ์ถ๋ ฅํ๋ ํจ์์
๋๋ค. ํด๋ก์ ๋ฅผ ์ฌ์ฉํ ํจ์๋ผ๋ ๋ป์ด๊ฒ ์ฃ ?!? ์ฐ์ map์ด ์ด๋ค ํจ์์ธ์ง์ ๋ํ ์ดํด๋ถํฐ ํด๋ด
์๋ค! map map ์ ํจ์์์ ๋ฐํ๋ ๊ฐ๋ค์ ๋ฐฐ์ด๋ก ๋ฆฌํดํด์ฃผ๋ ํจ์์
๋๋ค. ์๋ฅผ ๋ค์ด 1๋ถํฐ 10๊น์ง์ ์๋ฅผ ์ ๊ณฑํ ๊ฐ์ ๋ฐฐ์ด์ ์ ์ฅํ๋ค๊ณ ํด๋ด
์๋ค. ๊ณ ์ฐจํจ์๋ฅผ ์ฐ์ง ์๋๋ค๋ฉด, var array = [Int]() for i in 1...10 { array.append(i*i) } print(array) // ์ถ๋ ฅ: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] ์ด๋ ๊ฒ ๊ตฌํํด์ผ๊ฒ ์ฃ ?! ์ด๋ฅผ ํ ๋ฌธ์ฅ์ผ๋ก ์ค์ฌ์ค ์ ์๋ ์น๊ตฌ๊ฐ ์ด map์ด..
์๋
ํ์ธ์! ์ค๋์ ํ์ฅ(Extension)์ ๋ํ ๊ณต๋ถ๋ฅผ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค! ํ์ฅ์ด๋? ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ, ํ๋กํ ์ฝ ๋ฑ์ ํ์
์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ์ฌ ์ฌ์ฉํ๋๋ก ๋์์ฃผ๋ ๊ธฐ๋ฅ์
๋๋ค. ๊ธฐ์กด์ ์๋ ๊ฒ์ ํ์ฅํ์ฌ ์์ฑ์(Initialize), ๋ฉ์๋(method), ํ๋กํผํฐ(property)๋ฅผ ์ถ๊ฐํ ์ ์์ด์. ํ์ฅ์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ class Object { // ํด๋์ค ๊ตฌํ } extension Object { // ํด๋์ค์ ์ถ๊ฐํ ๊ธฐ๋ฅ ๊ตฌํ } ์์ ์ฝ๋์ฒ๋ผ ํ์ฅ ๋ต๊ฒ extension ์ด๋ผ๋ ํค์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. Q : ๊ทธ๋ผ ํ์ฅ์ ์ถ๊ฐํ๊ธฐ ์ ์ ์์ฑํ๋ ๊ธฐ์กด ํด๋์ค์ ์ธ์คํด์ค์์๋ ํ์ฅ์์ ๊ตฌํํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์๊น์? A : ๋ค! ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ฅ์ Static Dispatch ๋ฐฉ..
์ ๊ทผ์ ์ด์ ๊ธฐ๋ณธ ๊ฐ๋
์ ๊ทผ์ ์ด๊ฐ ํ์ํ ์ด์ ์ ํ์ด ์ํ๋ ์ฝ๋๋ฅผ ๊ฐ์ถ ์ ์์. ์ฝ๋์ ์์ญ์ ๋ถ๋ฆฌ์์ผ์, ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ ๊ฐ๋ฅ ์ปดํ์ผ ์๊ฐ ๊ฐ์ ์ปดํ์ผ๋ฌ ์
์ฅ์์๋ ํด๋น ๋ณ์๊ฐ ์ด๋ ๋ฒ์์์๋ง ์ฌ์ฉํ๋์ง ์ธ์งํ ์ ์์ด์ ๋ ๋น ๋ฅด๊ฒ ์ํํ ์ ์๋ค. class Student { private var _name: String = "ํ๊ธธ๋" func setName(_ name: String) { self._name = name } } var student = Student() // student._name // ๐จ error: Value of type 'Student' has no member 'name' // student._name = "EarthSea" // ๐จ error: Value of type..
์์ฑ ๊ฐ์์(Property Observers)๋? ํ๋กํผํฐ ์ต์ ๋ฒ๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ, ์์ฑ(property)์ด ๋ณํ ๋ ํธ์ถ์ด ๋๋ค. var myProperty: Int = 20 { didSet{ // ๋ณ๊ฒฝ๋ ์งํ์ ํธ์ถ // oldValue๊ฐ ํธ์ถ๊ฐ๋ฅ } willSet{ // ๋ณ๊ฒฝ๋๊ธฐ ์ง์ ์ ํธ์ถ // newValue๊ฐ ํธ์ถ๊ฐ๋ฅ } } didSet - ๊ฐ์ด ๋ณ๊ฒฝ๋ ์ง ํ์ ํธ์ถ๋๊ณ , ๋ณํ๊ธฐ ์ ์ ๊ฐ์ด oldValue๋ก ์๋ ์ ์ฅ๋จ. willSet - ๊ฐ์ด ๋ณ๊ฒฝ๋ ์ง์ ์ ํธ์ถ๋๊ณ , ๋ณํ ํ์ ๊ฐ์ด newValue๋ก ์๋ ์ ์ฅ ์ ์ฅ์์ฑ์ var๋ก๋ง ์ ์ธ์ด ๊ฐ๋ฅ let์ ๊ฐ์ด ๋ณํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ด์ฐฐํ ํ์๊ฐ ์์. ์ง์ฐ ์ ์ฅ ์์ฑ์ ๊ด์ฐฐ์ด ๋ถ๊ฐ๋ฅ ์๋ฃํ์ ์ ์ธํ๋ ๊ฒ์ ์ผ๋ฐ ๋ณ์์ ๋์ผ ์ ์ฅ ์์ฑ์ ๋ณํ ์์ ..
ํ์
์บ์คํ
์ด๋? : ๋ณ์๋ ๊ฐ์ฒด์ ํ์
์ ๋ค๋ฅธ ํ์
์ผ๋ก ๋ณํํ๋ ๊ฒ is ์ฐ์ฐ์ : ํ์
์ ์ฒดํฌํ๋ ์ฐ์ฐ์๋ก Bool ํ์
์ ๋ฐํํ๋ค. var name: String = "EarthSea" print(name is String) print(name is Int) /* ์ถ๋ ฅ : true false */ var alphabet: Character = "A" print(alphabet is Character) print(alphabet is String) /* ์ถ๋ ฅ : true false */ var age: Int = 20 print(age is Int) print(age is Double) /* ์ถ๋ ฅ : true false */ ์
์บ์คํ
๊ณผ ๋ค์ด์บ์คํ
: ์ธ์คํด์ค์ ํ์
์ ํ์ธํ๊ฑฐ๋ ํด๋น ์ธ์คํด์ค๋ฅผ ์ํผํด๋..
'๐ Study/๐ฉ Swift' ์นดํ
๊ณ ๋ฆฌ์ ๊ธ ๋ชฉ๋ก
๋จ์ถํค
๋ด ๋ธ๋ก๊ทธ
๋ด ๋ธ๋ก๊ทธ - ๊ด๋ฆฌ์ ํ ์ ํ |
Q
Q
|
์ ๊ธ ์ฐ๊ธฐ |
W
W
|
๋ธ๋ก๊ทธ ๊ฒ์๊ธ
๊ธ ์์ (๊ถํ ์๋ ๊ฒฝ์ฐ) |
E
E
|
๋๊ธ ์์ญ์ผ๋ก ์ด๋ |
C
C
|
๋ชจ๋ ์์ญ
์ด ํ์ด์ง์ URL ๋ณต์ฌ |
S
S
|
๋งจ ์๋ก ์ด๋ |
T
T
|
ํฐ์คํ ๋ฆฌ ํ ์ด๋ |
H
H
|
๋จ์ถํค ์๋ด |
Shift + /
โง + /
|
* ๋จ์ถํค๋ ํ๊ธ/์๋ฌธ ๋์๋ฌธ์๋ก ์ด์ฉ ๊ฐ๋ฅํ๋ฉฐ, ํฐ์คํ ๋ฆฌ ๊ธฐ๋ณธ ๋๋ฉ์ธ์์๋ง ๋์ํฉ๋๋ค.