๐ฆ
Swift
31
Swift์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ํฌํจํ ๋ค์ํ ๊ฐ๋
์ ๋ค๋ฃน๋๋ค.
[Swift] ์ ๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น?Swift๋ฅผ ์ฒ์ ๋ฐฐ์ธ ๋ ๋ค์๋ ๋ง์ด ์๋ค.๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํด๋ผ."Apple ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋ฉด ์๋ ์ด๋ฏธ์ง์์ ๋ถ์์์ผ๋ก ํ์ํ ๊ฒ์ฒ๋ผ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ผ๊ณ ๋ช
์๋์ด ์๋ค.์ ๋ง ๊ทธ๋์ผํ ๊น?์ด๋ฒ์๋ ์ ์ด๋ฏธ์ง์์ ํ๋์์ผ๋ก ๋ฐ์ค ์น ๋ถ๋ถ์ ์ดํด๋ณด์. ๋ฌธ์์์ ๊ตฌ์กฐ์ฒด๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๊ถ์ฅํ๋ฉด์ ์ ์ ํ๊ณ ์๋ ๋ถ๋ถ์ด ์๋ค.store data and
[Swift] CodingKeys๋ก ์ปจ๋ฒค์
์งํค๊ธฐJSON์ ๋ค๋ฃจ๋ค๋ณด๋ฉด ์ข
์ข
"ํ๋ ์ด๋ฆ์ ์ง์ง ์ด๋ ๊ฒ ํด์ผ ํ๋?" ๊ฐ์ ๊ณ ๋ฏผ์ ๋น ์ง ์ ์๋ค. Swift์์๋ CodingKeys๋ฅผ ์ฌ์ฉํด ์ด ๊ณ ๋ฏผ์ ํด๊ฒฐํ ์ ์๋ค.CodingKeys๋ Swift์ Codable ํ๋กํ ์ฝ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ ์ด๊ฑฐํ์ผ๋ก, ์ฐ๋ฆฌ๊ฐ ์ง๋ ฌํ์ ์ญ์ง๋ ฌํํ ๋ ์ฌ์ฉ๋๋ JSON ํค์ Swift์ ํ๋กํผํฐ ์ด๋ฆ์ ๋งคํํ ์ ์๊ฒ ๋์์ฃผ
[Swift] Concurrency, ๋๋ ํ ์ ์์ดConcurrencyConcurrency๋ '๋์์ ์ฌ๋ฌ ์์
์ ์ฒ๋ฆฌํ๋ ๊ฒ'์ ๋งํ๋ค. ์๋ฅผ ๋ค์ด, ์์
์คํธ๋ฆฌ๋ฐ ์ฑ์์ ๋
ธ๋๋ฅผ ๋ค์ผ๋ฉด์ ๋์์ ์นดํก์ ํ์ธํ ์ ์๋ ๊ฒ์ฒ๋ผ, ์ฑ์ด ์ฌ๋ฌ ์์
์ ํ ๋ฒ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋ง๋ค์ด ์ฃผ๋ ๊ฒ์ด๋ค.Concurrency๋ฅผ ์ฌ์ฉํ๋ฉด, ์ฑ์ด ์๋ต์ฑ์ด ๋์์ง๊ณ ์ฌ์ฉ์๊ฐ ๋๋ผ๋ ๋๋ ์ด๋ฅผ ์ต์ํํ ์ ์๋ค. Swift์์
[Swift] ํ์
์บ์คํ
, ํ ๋ณํ์ด ์๋๋ผ๊ณ ? ๐คSwift์ ํ์
์บ์คํ
์ Python์์ ๋งํ๋ ํ์
์บ์คํ
์ด๋ ์ข ๋ค๋ฅด๋ค. Python์์๋ ๋ฐ์ดํฐ ํ์
์ ๋ค๋ฅธ ๋ฐ์ดํฐ ํ์
์ผ๋ก ๋ณํํ๋, ํํ ํ ๋ณํ์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฐ๋
์ ํ์
์บ์คํ
์ด๋ผ๊ณ ํ๋ค. ๊ทธ๋์ Swift์ ํ์
์บ์คํ
์ด๋ผ๋ ์ฉ์ด๋ฅผ ์ฒ์ ์ ํ์ ๋๋ ์์ฐ์ค๋ฝ๊ฒ ํ ๋ณํ์ ๋ ์ฌ๋ ธ๋๋ฐ...ํด๋์ค ๊ณ์ธต ๊ตฌ์กฐ์์ ์ธ์คํด์ค์ ํ์
์ ํ์ธํ๊ฑฐ๋ ํน์ ํ
[Swift] GC๊ฐ ์๋ค๊ณ ..? ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์ธ๊ณPython์ ์ฃผ๋ก ์ฌ์ฉํ๋ค๊ฐ Swift๋ฅผ ๊ณต๋ถํ๋ฉด์, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์ ์ธ๊ณ๋ฅผ ๊ฒฝํํ๊ฒ ๋๋ค. Python์์๋ GC ๋๋ถ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๊ฑฑ์ ํ ์ผ์ด ๊ฑฐ์ ์์๋๋ฐ, Swift์์๋ ARC๋ผ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ์์ด ์ฌ์ฉ๋๊ณ (๋ฌผ๋ก Python๋ Reference Counting์ ์ฌ์ฉํ์ง๋ง..), ์ด๊ฒ ์๊ฐ๋ณด๋ค ์ ๊ฒฝ ์ธ ๊ฒ ๋ง์๋ค.์ด ๊ธ์์๋ Swift์ ๋ฉ
[Swift] ์ ๊ทผ ์ ์ด์์ (set) ํ์ฉ์ ๊ทผ ์ ์ด์๋ ์ฝ๋์ ํน์ ๋ถ๋ถ์ ์ธ๋ถ์์ ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ํ๊ฑฐ๋, ํน์ ๋ชจ๋์ด๋ ํ์ผ ๋ด์์๋ง ์ฌ์ฉํ ์ ์๋๋ก ์ ์ดํ๋ ์ญํ ์ ํ๋ค. Swift์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก 6๊ฐ์ ์ ๊ทผ ์ ์ด์์ (set) ํค์๋๋ฅผ ์ ๊ณตํ๊ณ ์๋ค.๊ธฐ๋ณธ ์ ๊ทผ ์ ์ด์์ ๊ทผ ์ ์ด์์ค๋ช
์ ๊ทผ ๊ฐ๋ฅ ๋ฒ์open๋ชจ๋ ๋ชจ๋์์ ์ ๊ทผ ๊ฐ๋ฅํด๋์ค ๋ฐ ๋ฉค๋ฒ ์ฌ์ ์ ๊ฐ๋ฅ์ธ๋ถ ๋ชจ๋๋ด๋ถ ๋ชจ๋public๋ชจ๋ ๋ชจ๋
[Swift] ํจํด ๋งค์นญ์ ํ์ฉํ ์ ์ด๋ฌธ - if case let, guard case letSwift์์๋ ํจํด ๋งค์นญ์ ํ์ฉํ์ฌ ๊ฐ์ ์ถ์ถํ๋ ๋ค์ํ ๋ฌธ๋ฒ์ ์ ๊ณตํ๋ค. ๊ทธ ์ค if case let๊ณผ guard case let์ ํน์ ํจํด๊ณผ ์ผ์นํ๋ ๊ฒฝ์ฐ ๊ฐ์ ๋ฐ์ธ๋ฉํ๋ ๋ฐ ์ ์ฉํ๋ค. ์ด ๊ธ์์๋ ๋ ๋ฌธ๋ฒ์ ์ฐจ์ด์ ๊ณผ ์ฌ์ฉ๋ฒ์ ์ ๋ฆฌํ๋ค.if case let ๋ฌธ๋ฒif case let์ ํน์ ํจํด๊ณผ ๊ฐ์ด ์ผ์นํ ๋๋ง ์คํ๋๋ ์กฐ๊ฑด๋ฌธ์ผ๋ก, switch ๋ฌธ
[Swift] Class vs Struct ์ธ์ ์ฌ์ฉํ ๊น?Swift์์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์กฐ์ํ ๋ Class(ํด๋์ค)์ Struct(๊ตฌ์กฐ์ฒด)๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋์ ๋น์ทํ๋ฉด์๋ ์ค์ํ ์ฐจ์ด์ ์ ๊ฐ์ง๊ณ ์๊ธฐ์, ์ฝ๋์ ๊ฐ๋
์ฑ๊ณผ ์ฑ๋ฅ์ ์ํด ์ ์ ํํด์ ์ฌ์ฉํด์ผ ํ๋ค. ์ด๋ฒ ๊ธ์์๋ Class์ Struct์ ์ฐจ์ด์ ๊ณผ ๊ฐ๊ฐ์ ์ธ์ ์ฌ์ฉํด์ผ ํ๋์ง๋ฅผ ์ ๋ฆฌํด๋ณธ๋ค.Class์ Struct์ ์ฃผ์ ์ฐจ์ด์ ํน์ฑClassS
[Swift] ์ธ๋ฑ์ค ๋ฒ์ ์ฒดํฌ๋ฅผ Swiftyํ๊ฒ ํ๋ ๋ฐฉ๋ฒSwift์์ ์ปฌ๋ ์
์ ์ธ๋ฑ์ค๋ฅผ ์์ ํ๊ฒ ์ฒดํฌํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋ค. ์์ ํ ์ธ๋ฑ์ค ์ ๊ทผ์ ํฌ๋์๋ฅผ ๋ฐฉ์งํ๊ณ ์ฝ๋์ ์์ ์ฑ์ ๋์ด๋ ์ค์ํ ์์์ด๋ค. ์ด ๊ธ์์๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ์์ ๋น๊ตํ์ฌ ๊ฐ์ฅ Swiftyํ ๋ฐฉ์์ด ๋ฌด์์ธ์ง ์ดํด๋ณด๊ฒ ๋ค.contains(_ :)๋ฅผ ํ์ฉํ ๋ฒ์ ์ฒดํฌ(0..<arr.count).contains(index)์ฅ์ ๊ฐ๊ฒฐํ๊ณ
[Swift 6] ์ต์ ๊ธฐ๋ฅ ๋ฐ ๊ฐ์ ์ฌํญSwift 6์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญSwift 6์์๋ ์ฝ๋ ์์ ์ฑ์ ๋์ด๊ณ ๊ฐ๋ฐ์๊ฐ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์์
ํ ์ ์๋๋ก ์ฌ๋ฌ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์๋ค.์ ์ ํ์
๊ฒ์ฌ ๊ฐํSwift 6์์๋ ์ ์ ํ์
๊ฒ์ฌ(Static Type Checking)๊ฐ ๋์ฑ ๊ฐ๋ ฅํด์ก๋ค.ํ์
์ถ๋ก ์ด ๋ ์ ํํ๊ฒ ๋์ํ๋ฉฐ, ์ปดํ์ผ๋ฌ๊ฐ ์ค์๋ฅผ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ณตํ๋ค.๋ถํ์ํ ์์์ ๋ณํ
[Swift] ํ๋ณํ(Type Conversion & Casting) ์ ๋ฆฌ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
๋ณํ (Primitive Type Conversion)Swift์์๋ ๋ช
์์ ํ๋ณํ(Explicit Type Conversion)์ ์ฌ์ฉํด์ผ ํ๋ค.์ฆ, Int -> String, Double -> Int๊ฐ์ ๋ณํ์ ํ ๋ ์๋ ๋ณํ์ด ๋์ง ์๊ณ , ์ง์ ๋ณํ์ ์ํํด์ผ ํ๋ค.์ ์(Int) โ ์ค์(Dobuel, Float) ๋ณํ์
[Swift] ๋ฌธ์์ด(String) ๊ด๋ จ ์ฃผ์ ํจ์ ์ ๋ฆฌ๋ฌธ์์ด ๊ธธ์ด ๋ฐ ํ์ธ ๊ด๋ จ ํจ์๋ฌธ์์ด ๊ธธ์ด ํ์ธ (count)๋ฌธ์์ด์ ๊ธ์ ์ ๋ฐํlet text = "Swift"
print(text.count) // 5๋ฐฐ์ด์ฒ๋ผ isEmpty๋ ๊ฐ๋ฅlet text = "Swift"
print(text.isEmpty) // false๋ฐฐ์ด์ ์์ ๊ฐ์ ํ์ธ๊ณผ ๋์ผํ ๋ฐฉ์let array = ["A", "B", "C"]
pr
[Swift] Comparable, Equatable, Hashable ๋ฐ ์ฃผ์ ํ๋กํ ์ฝ ์ ๋ฆฌSwift์์ ํ๋กํ ์ฝ(Protocol)์ ํน์ ๊ธฐ๋ฅ์ ์ ์ํ๊ณ , ์ด๋ฅผ ์ฌ๋ฌ ํ์
์์ ๊ตฌํํ๋๋ก ํ๋ ๊ฐ๋ ฅํ ๊ฐ๋
์ด๋ค.๊ทธ ์ค์์๋ Comparable, Equatable, Hashable๊ฐ์ ๊ธฐ๋ณธ ํ๋กํ ์ฝ๋ค์ ์ ๋ ฌ, ๋น๊ต, ๋์
๋๋ฆฌ ํค ํ์ฉ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.Comparable ํ๋กํ ์ฝComparable์ด๋?Comparable์ ๊ฐ์ ๋น๊ตํ ์ ์
[Swift] ๊ณ ์ฐจํจ์(Higher-Order Functions)Swift์์๋ ๊ณ ์ฐจํจ์(Higher-Order Functions)๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด ๋ฐ ์ปฌ๋ ์
๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ฒฐํ๊ณ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.๊ณ ์ฐจํจ์๋ ํจ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ๊ฑฐ๋ ๋ฐํํ ์ ์๋ ํจ์๋ฅผ ์๋ฏธํ๋ฉฐ, ๋ํ์ ์ผ๋ก map, filter, reduce, compactMap, flatmap๋ฑ์ด ์๋ค.๊ณ ์ฐจํจ์(Higher-Order Functions)๊ณ
[Swift] ์ต์
๋(Optionals) ์ดํดํ๊ธฐ โ ์ธ๋ํ, ๊ฐ์ ์ธ๋ํ, ์ต์
๋ ๋ฐ์ธ๋ฉSwift๋ ์์ ํ ํ๋ก๊ทธ๋๋ฐ์ ์ํด nil ๊ฐ์ ํ์ฉํ๋ ํ์
์ ์ต์
๋(Optional)๋ก ์ ๊ณตํ๋ค.์ต์
๋์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ฉด ๋ฐํ์ ํฌ๋์๋ฅผ ๋ฐฉ์งํ๊ณ ์์ ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.์ต์
๋(Optionals)์ด๋?์ต์
๋์ ๊ฐ์ด ์กด์ฌํ ์๋ ์๊ณ nil์ผ ์๋ ์๋ ํ์
์ต์
๋์ ์ฌ์ฉํ๋ฉด ๊ฐ์ด ์์ ๊ฐ๋ฅ์ฑ์ ํํํ ์ ์์var name: String? =
[Swift] os_log ์ฌ์ฉํ๊ธฐos_log?Swift์์ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ ๋ print๋ NSLog๋ฅผ ์์ฃผ ์ฌ์ฉํ์ง๋ง,print: ๋๋ฒ๊น
์ฉ๋๋ก๋ ์ข์ง๋ง ๋ฆด๋ฆฌ์ฆ ๋น๋์์๋ ๋
ธ์ถ๋์ด ๋ณด์์ ์ทจ์ฝํจNSLog: ์์คํ
๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ณ , ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์์ด๋ฅผ ๋์ฒดํ ์ ์๋ ๊ฒ ๋ฐ๋ก os_log์ด๋ค.์ ํ์์ ๊ถ์ฅํ๋ ๋ก๊ทธ ํ๋ ์์ํฌ๋น ๋ฅด๊ณ ํจ์จ์ ์ด๋ฉฐ, ๋ฆด๋ฆฌ์ฆ ๋น๋์์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ ๋ณด
[Swift] ์ฑ ๊ฐ๋ฐ์์์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๋ํ ์ดํด (Swift ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ ARC ๊ฐ๋
)Swift์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐStack: ์ง์ญ ๋ณ์ ๋ฐ ํจ์ ํธ์ถ ์ ํ ๋น๋๋ ๊ณต๊ฐHeap: ํด๋์ค ๋ฐ ์ฐธ์กฐ ํ์
์ธ์คํด์ค๊ฐ ์ ์ฅ๋๋ ๊ณต๊ฐGlobal: ์ ์ญ ๋ณ์ ๋ฐ ์ ์ ๋ณ์์ ์ ์ฅ ๊ณต๊ฐCode: ์คํ ์ฝ๋๊ฐ ์ ์ฅ๋๋ ์์ญARC(Automatic Reference Counting) ๊ฐ๋
ARC๋ Swift์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์๋์ผ๋ก ์ํํ๋ ๊ธฐ๋ฅ์ผ๋ก, ๊ฐ์ฒด๊ฐ ๋
[Swift] ์๋ฃ๊ตฌ์กฐ ํ์ต ๋ฐ ํ์ฉ๋ฐฐ์ด(Array)๋์ผํ ํ์
์ ๋ฐ์ดํฐ๋ฅผ ์์๋๋ก ์ ์ฅํ๋ ๊ตฌ์กฐvar numbers = [1, 2, 3, 4, 5]
numbers.append(6)
print(numbers[0]) // 1๋์
๋๋ฆฌ(Dictionary)ํค-๊ฐ ์์ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐvar student: [String: Any] = ["name": "์ถ์ฅ", "age": 4]
print(stu
[Swift] ๊ธฐ๋ณธ ๊ฐ๋
๋ฐ ๋ฌธ๋ฒ ํ์ตSwift๋?Apple์ด ๊ฐ๋ฐํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก, ๊ฐ๊ฒฐํ๊ณ ์์ ํ๋ฉฐ ์ฑ๋ฅ์ด ๋ฐ์ด๋๋ค.iOS, macOS, watchOS, tvOS ๊ฐ๋ฐ์ ์ฌ์ฉ๋๋ค.๋ณ์์ ์์var: ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ ๊ฐlet: ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ ๊ฐvar name: String = "์ถ์ฅ" // ๋ณ์ ์ ์ธ (๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ)
let age: Int = 4 // ์์ ์ ์ธ (๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ)๊ธฐ
ํ๊ทธ
SwiftiosSwift 6ClassStrcutifguardํจํด ๋งค์นญ์ ๊ทผ ์ ์ด์Access ControlARCType CastingConcurrency๋์์ฑ ํ๋ก๊ทธ๋๋ฐCodingKeysJSONAPIStruct
์ต๊ทผ ๋๊ธ
์์ง ๋๊ธ์ด ์์ด์