λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
728x90

🍎 iOS/Swift11

[Swift] final ν‚€μ›Œλ“œλŠ” μ–Έμ œ μ‚¬μš©ν• κΉŒ? Swift μ—μ„œλŠ” λ‹€λ₯Έ 언어와 λΉ„μŠ·ν•˜κ²Œ 클래슀λ₯Ό 상속해 μ„œλΈŒν΄λž˜μŠ€λ₯Ό κ΅¬ν˜„ν•  수 μžˆμ–΄μš”. λ§Œμ•½, ν•΄λ‹Ή ν΄λž˜μŠ€κ°€ 더이상 상속이 ν•„μš”μ—†κ±°λ‚˜ νŠΉμ • 속성은 μ˜€λ²„λΌμ΄λ“œν•˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Όν• κΉŒμš”?! πŸ‘€ final ν‚€μ›Œλ“œλ₯Ό 톡해 더 이상 상속이 ν•„μš”μ—†μŒμ„ λͺ…μ‹œν•  수 있고, μ˜€λ²„λΌμ΄λ“œ ν•  μ‹œ 컴파일 μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€! λͺ…μ‹œμ μœΌλ‘œ μƒμ†λ˜μ§€ μ•ŠλŠ” 것 외에 λŸ°νƒ€μž„ μ„±λŠ₯이 ν–₯μƒλœλ‹€λŠ” μž₯점도 μžˆλ‹€κ³  ν•΄μš”. πŸ‘€ Swift λ¬Έμ„œμ—μ„œλŠ” λ‹€μŒκ³Ό 같이 μ„€λͺ…ν•˜κ³  μžˆμ–΄μš”! μ„œλΈŒν΄λž˜μŠ€μ—μ„œ νŠΉμ • method, property, subscript κ°€ μ˜€λ²„λΌμ΄λ“œ λ˜μ§€ μ•Šλ„λ‘ ν•˜κΈ°μœ„ν•΄μ„œ final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€. final ν‚€μ›Œλ“œλ₯Ό 뢙인 method, property, subscript λ₯Ό μ„œλΈŒν΄λž˜μŠ€μ—μ„œ μ˜€λ²„λΌμ΄λ“œν•˜λ©΄, 컴파.. 2021. 12. 12.
[Swift] μŠ€ν„°λ”” 7μ£Όμ°¨ - κ·Έλž˜ν”„ μ•Œκ³ λ¦¬μ¦˜ 6/1 μ§„ν–‰ν–ˆλ˜ μŠ€μœ„ν”„νŠΈ 데이터 ꡬ쑰와 μ•Œκ³ λ¦¬μ¦˜ μ±…μ˜ 5μž₯ '트리 ꡬ쑰 기반의 μ•Œκ³ λ¦¬μ¦˜' μŠ€ν„°λ”” μ •λ¦¬μž…λ‹ˆλ‹€! 1. κ·Έλž˜ν”„μ˜ κ°œλ…, κ·Έλž˜ν”„μ˜ μ’…λ₯˜ 2. κ·Έλž˜ν”„μ˜ ν‘œν˜„ 방식 (μ½”λ“œμ μœΌλ‘œ) 3. κ·Έλž˜ν”„ 탐색 - DFS(κΉŠμ΄μš°μ„ νƒμƒ‰), BFS(λ„ˆλΉ„μš°μ„ νƒμƒ‰) πŸ’‘ κ·Έλž˜ν”„(Graph) κ·Έλž˜ν”„λŠ” λ…Έλ“œ(Vertex; 꼭지점)와 λ…Έλ“œλ₯Ό μ—°κ²°ν•˜λŠ” κ°„μ„ (Edge; λͺ¨μ„œλ¦¬)의 μ§‘ν•©μœΌλ‘œ 이루어진 데이터 κ΅¬μ‘°μž…λ‹ˆλ‹€. κ·Έλž˜ν”„λ₯Ό 톡해 μ—°κ²°λ˜μ–΄ μžˆλŠ” κ°μ²΄λ“€μ˜ 관계λ₯Ό ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜ν”„μ˜ ν™œμš© μ˜ˆμ‹œ : SNS μ—μ„œ μ—°κ²°λœ μ‚¬λžŒλ“€, 지도, μ§€ν•˜μ²  λ…Έμ„ λ„μ˜ μ΅œλ‹¨ 경둜, μ„ μˆ˜ κ³Όλͺ© λ“± .. βœ”οΈŽ κ·Έλž˜ν”„(Graph)의 μ’…λ₯˜ 1) 무방ν–₯ κ·Έλž˜ν”„(Undirected Graph) λ…Έλ“œλ₯Ό μ—°κ²°ν•˜λŠ” 간선이 μ–‘λ°©ν–₯성인 κ·Έλž˜ν”„μž…λ‹ˆλ‹€. λ°©ν–₯이 μ—†λ‹€λŠ”.. 2021. 7. 26.
[Swift] μŠ€ν„°λ”” 5μ£Όμ°¨ - 트리 ꡬ쑰 기반의 μ•Œκ³ λ¦¬μ¦˜ 5/18 μ§„ν–‰ν–ˆλ˜ μŠ€μœ„ν”„νŠΈ 데이터 ꡬ쑰와 μ•Œκ³ λ¦¬μ¦˜ μ±…μ˜ 5μž₯ '트리 ꡬ쑰 기반의 μ•Œκ³ λ¦¬μ¦˜' μŠ€ν„°λ”” μ •λ¦¬μž…λ‹ˆλ‹€! πŸŽ„ 1. 트리의 νŠΉμ§• 2. 트리 vs κ·Έλž˜ν”„ 3. 이진 트리, 이진 트리의 μ’…λ₯˜ 4. 이진 탐색 트리(BST, Binary Search Tree) 5. 트리 순회 방식 6. B νŠΈλ¦¬μ™€ μŠ€ν”Œλ ˆμ΄ 트리 πŸŽ„ 트리(Tree) νŠΈλ¦¬λŠ” λ…Έλ“œμ˜ μ§‘ν•©μœΌλ‘œ, 계측을 이루고 μžˆλŠ” 데이터 ꡬ쑰λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 트리의 μ΅œμƒμœ„ λ…Έλ“œμΈ 루트 λ…Έλ“œ, κ·Έ μ•„λž˜λ‘œ λ»—μ–΄λ‚˜κ°€λŠ” μžμ‹ λ…Έλ“œλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. 각각의 λ…Έλ“œλŠ” ν‚€ κ°’, μžμ‹ λ…Έλ“œ 집합, λΆ€λͺ¨ λ…Έλ“œ 링크 등을 ν¬ν•¨ν•˜κ³  μžˆλŠ” 데이터 κ΅¬μ‘°μž…λ‹ˆλ‹€. 트리의 νŠΉμ§• νŠΈλ¦¬λŠ” κ·Έλž˜ν”„μ˜ ν•œ μ’…λ₯˜λ‘œ, 사이클이 μ—†λŠ” ν•˜λ‚˜μ˜ μ—°κ²° κ·Έλž˜ν”„μž…λ‹ˆλ‹€. νŠΈλ¦¬λŠ” 이진 트리, 이진 탐색 트리, κ· ν˜• 트리(AV.. 2021. 7. 26.
[Swift] μŠ€ν„°λ”” 3μ£Όμ°¨ - μŠ€μœ„ν”„νŠΈ 데이터 ꡬ쑰와 μ•Œκ³ λ¦¬μ¦˜ 5/4 μ§„ν–‰ν–ˆλ˜ μŠ€μœ„ν”„νŠΈ 데이터 ꡬ쑰와 μ•Œκ³ λ¦¬μ¦˜ μ±…μ˜ 3μž₯ 'μŠ€μœ„ν”„νŠΈ κ³ κΈ‰ 데이터 ꡬ쑰의 ν™œμš©' μŠ€ν„°λ”” μ •λ¦¬μž…λ‹ˆλ‹€! πŸ‘€ 3μž₯ μš”μ•½ 3μž₯μ—μ„œλŠ” Swift κΈ°λ³Έ 데이터 ꡬ쑰 쀑 Collections (Array, Dictionary, Set) 을 ν™œμš©ν•΄μ„œ λ‹€μ–‘ν•œ 데이터 ꡬ쑰에 λŒ€ν•΄ μ„€λͺ…ν•˜κ³  Swift μ½”λ“œλ‘œ μž‘μ„±ν•˜λŠ” 법을 ν•™μŠ΅ν–ˆμŠ΅λ‹ˆλ‹€! Stack(μŠ€νƒ), Queue(큐), Circular Buffer(μˆœν™˜λ²„νΌ), Priority Queue(μš°μ„ μˆœμœ„ 큐), Linked List(μ—°κ²° λͺ©λ‘) μ΄λ ‡κ²Œ 여섯가지λ₯Ό 닀루고 있고, μ£Όμ œλŠ” 크게 λ‹€μŒμ²˜λŸΌ λ‚˜λ‰©λ‹ˆλ‹€. κΈ°λ³Έ 데이터ꡬ쑰 κ΅¬ν˜„μ„ μœ„ν•œ νƒ€μž…κ³Ό ν”„λ‘œν† μ½œ μ„€λͺ… - Iterator, Sequence, Collection λ‹€μ–‘ν•œ 데이터 ꡬ쑰에 λŒ€ν•œ μ„€λͺ…κ³Ό Swift 둜 .. 2021. 6. 7.
[Swift] μ»¬λ ‰μ…˜ νƒ€μž…μ˜ ν”„λ‘œν† μ½œ - IteratorProtocol, Sequence, Collection IteratorProtocol Iterator λŠ” IteratorProtocol 에 λΆ€ν•©ν•˜λŠ” λ²”μš© νƒ€μž…μ΄λ‹€. IteratorProtocol 의 λͺ©μ μ€ μ»¬λ ‰μ…˜μ„ 반볡 μˆœνšŒν•˜λŠ” next() λ©”μ†Œλ“œλ₯Ό 톡해 μ»¬λ ‰μ…˜μ˜ 반볡 μƒνƒœλ₯Ό μΊ‘μŠν™” ν•˜λŠ” 것이닀. IteratorProtocol 의 μ •μ˜ Element :: 반볡 μˆœνšŒν•˜λ©° κ°€μ Έμ˜¨ μš”μ†Œ associatedtype (μ—°κ΄€νƒ€μž…)으둜 μ§€μ •ν•¨μœΌλ‘œμ¨ μˆœνšŒν•΄μ„œ κ°€μ Έμ˜¨ μš”μ†Œμ˜ νƒ€μž…μ„ 지정할 수 μžˆλ‹€. next() λ©”μ†Œλ“œλŠ” μ‹œν€€μŠ€μ— μžˆλŠ” λ‹€μŒ μš”μ†Œλ₯Ό λ°˜ν™˜ν•˜κ±°λ‚˜, μ‹œν€€μŠ€μ˜ λ§ˆμ§€λ§‰μΈ 경우 nil 을 λ°˜ν™˜ν•œλ‹€. public protocol IteratorProtocol { associatedtype Element public mutating func next() -> Self.Ele.. 2021. 6. 7.
[Swift] Collection Type - 집합(Set), 집합 μ—°μ‚°, 반볡, μ •λ ¬ μ•ˆλ…•ν•˜μ„Έμš”! 이번 ν¬μŠ€νŒ…μ€ Swift 데이터ꡬ쑰와 μ•Œκ³ λ¦¬μ¦˜ μ±…μ˜ 2μž₯ μŠ€ν„°λ”” 쀑 λ‘λ²ˆμ§Έ 핡심 λ‚΄μš©μΈ Collection Type 에 λŒ€ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. Array (λ°°μ—΄), Dictionary (λ”•μ…”λ„ˆλ¦¬, μ‚¬μ „ν˜•), Set (집합), Tuple(νŠœν”Œ) 넀가지 νƒ€μž…μ— λŒ€ν•΄ ν•™μŠ΅ν–ˆμŠ΅λ‹ˆλ‹€. 🍑 집합(Set) Set 은 μ„œλ‘œ μ€‘λ³΅λ˜μ§€ μ•Šκ³ , nil 이 ν¬ν•¨λ˜μ§€ μ•Šμ€ μˆœμ„œκ°€ μ—†λŠ” μ»¬λ ‰μ…˜μž…λ‹ˆλ‹€. Set λŠ” μˆ˜ν•™μ—μ„œμ˜ μ§‘ν•©μ˜ κ°œλ…μ„ 기반으둜 λ§Œλ“  데이터 νƒ€μž…μ΄λΌκ³  ν•©λ‹ˆλ‹€. Set 의 λ°μ΄ν„°λŠ” Dictionary의 Key 와 λ§ˆμ°¬κ°€μ§€λ‘œ Hashable ν”„λ‘œν† μ½œμ„ λΆ€ν•©ν•΄μ•Ό ν•©λ‹ˆλ‹€! κΈ°λ³Έ 데이터 νƒ€μž… 외에 μ»€μŠ€ν…€ νƒ€μž…λ„ 지정할 수 μžˆμ§€λ§Œ, 이 경우 Hashable ν”„λ‘œν† μ½œμ„ λΆ€ν•©ν•˜λ„λ‘ λ§Œλ“€μ–΄μ•Ό ν•©λ‹ˆλ‹€. Set 은 배열보닀 .. 2021. 5. 31.
[Swift] Collection Type - λ”•μ…”λ„ˆλ¦¬(Dictionary), 반볡문, key/value 기반 μ •λ ¬ μ•ˆλ…•ν•˜μ„Έμš”! 이번 ν¬μŠ€νŒ…μ€ Swift 데이터ꡬ쑰와 μ•Œκ³ λ¦¬μ¦˜ μ±…μ˜ 2μž₯ μŠ€ν„°λ”” 쀑 λ‘λ²ˆμ§Έ 핡심 λ‚΄μš©μΈ Collection Type 에 λŒ€ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. Array (λ°°μ—΄), Dictionary (λ”•μ…”λ„ˆλ¦¬, μ‚¬μ „ν˜•), Set (μ„ΈνŠΈ), Tuple(νŠœν”Œ) 넀가지 νƒ€μž…μ— λŒ€ν•΄ ν•™μŠ΅ν–ˆμŠ΅λ‹ˆλ‹€. πŸ“– λ”•μ…”λ„ˆλ¦¬(Dictionary; μ‚¬μ „ν˜•) λ”•μ…”λ„ˆλ¦¬λŠ” λ™μΌν•œ 데이터 νƒ€μž…μ΄ Key: Value 쌍으둜 묢인 μˆœμ„œκ°€ μ—†λŠ” μ»¬λ ‰μ…˜(Unordered Collection)μž…λ‹ˆλ‹€. Value λŠ” μ‹€μ œλ‘œ λ‹΄κ³  μžˆλŠ” κ°’, Key λŠ” ν•΄λ‹Ή κ°’μ˜ μ΄λ¦„ν‘œ(μ‹λ³„μž, Identifier)와 같은 역할을 ν•©λ‹ˆλ‹€. Key λ₯Ό 톡해 Value λ₯Ό κ°€μ Έμ˜€λŠ” κ²ƒμ΄μ§€μš”! λ”•μ…”λ„ˆλ¦¬μ˜ 데이터 κ΅¬μ‘°λŠ” μ΄λ¦„μ—μ„œλ„ λ‚˜νƒ€λ‚˜λ“―μ΄ 사전과 μœ μ‚¬ν•œ 데이터 νƒ€μž…μΈλ°μš”. 사전.. 2021. 5. 31.
[Swift] Collection Type - λ°°μ—΄ (Array), ArraySlice, CoW μ•ˆλ…•ν•˜μ„Έμš”! 이번 ν¬μŠ€νŒ…μ€ Swift 데이터ꡬ쑰와 μ•Œκ³ λ¦¬μ¦˜ μ±…μ˜ 2μž₯ μŠ€ν„°λ”” 쀑 λ‘λ²ˆμ§Έ 핡심 λ‚΄μš©μΈ Collection Type 에 λŒ€ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. Array (λ°°μ—΄), Dictionary (λ”•μ…”λ„ˆλ¦¬, μ‚¬μ „ν˜•), Set (μ„ΈνŠΈ), Tuple(νŠœν”Œ) 넀가지 νƒ€μž…μ— λŒ€ν•΄ ν•™μŠ΅ν–ˆμŠ΅λ‹ˆλ‹€. πŸ‘€ μ»¬λ ‰μ…˜ νƒ€μž…(Collection Type) μ»¬λ ‰μ…˜ νƒ€μž…μ€ μ—¬λŸ¬ 값을 μ €μž₯ν•  수 μžˆλŠ” ν˜•νƒœλ‘œ, Swift 에 κ΅¬ν˜„λœ μ»¬λ ‰μ…˜ νƒ€μž…μ€ Array, Dictionary, Set κ°€ μžˆμŠ΅λ‹ˆλ‹€. Tuple 은 μ»¬λ ‰μ…˜ νƒ€μž…μ€ μ•„λ‹ˆμ§€λ§Œ, μœ μ‚¬ν•œ λ°©μ‹μœΌλ‘œ ν™œμš©λ©λ‹ˆλ‹€! λ°°μ—΄(Array) : μˆœμ„œλ₯Ό 가지며, 동일 νƒ€μž…μ˜ 값을 λͺ©λ‘μœΌλ‘œ μ €μž₯ν•˜λŠ” μ»¬λ ‰μ…˜ λ”•μ…”λ„ˆλ¦¬(Dictionary; μ‚¬μ „ν˜•) : λ™μΌν•œ 데이터 νƒ€μž…μ΄ Key: Value 쌍으둜 .. 2021. 5. 28.
[Swift] Swift μ—μ„œ ꡬ쑰체와 클래슀의 차이 ꡬ쑰체와 ν΄λž˜μŠ€λŠ” 데이터λ₯Ό μš©λ„μ— 맞게 λ¬Άμ–΄μ„œ ν‘œν˜„ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€. Swift μ—μ„œλŠ” ꡬ쑰체와 클래슀의 문법이 μœ μ‚¬ν•˜κ³ , property 와 method λ₯Ό 지닐 수 μžˆμŠ΅λ‹ˆλ‹€. λ‘˜μ˜ 큰 μ°¨μ΄λŠ” κ΅¬μ‘°μ²΄λŠ” Value type (값을 λ³΅μ‚¬ν•˜λŠ” ν˜•νƒœ), ν΄λž˜μŠ€λŠ” Reference type (객체λ₯Ό κ³΅μœ ν•˜λŠ” ν˜•νƒœ) μž…λ‹ˆλ‹€. λ˜ν•œ, ν΄λž˜μŠ€λŠ” 상속이 κ°€λŠ₯ν•˜μ§€λ§Œ κ΅¬μ‘°μ²΄λŠ” 상속이 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€. μ€‘μš”ν•œ 핡심은 Swift ν‘œμ€€ λΌμ΄λΈŒλŸ¬λ¦¬μ— μ •μ˜λœ νƒ€μž…μ˜ λŒ€λΆ€λΆ„μ€ κ΅¬μ‘°μ²΄λΌλŠ” μ μž…λ‹ˆλ‹€ ! πŸ‘€ Swift 의 ꡬ쑰체가 C 기반 μ–Έμ–΄μ˜ ꡬ쑰체와 λ‹€λ₯Έ 점은? C 기반 μ–Έμ–΄μ˜ ꡬ쑰체와 기본적인 κΈ°λŠ₯은 λΉ„μŠ·ν•˜μ§€λ§Œ, 클래슀의 λͺ‡ 가지 κΈ°λŠ₯을 μΆ”κ°€ν•΄ 였히렀 ν΄λž˜μŠ€μ— κ°€κΉŒμš΄ κΈ°λŠ₯을 ν•œλ‹€. μžλ™μœΌλ‘œ μƒμ„±λ˜λŠ” 멀버 μ΄ˆκΈ°ν™” ν•¨μˆ˜ 외에 μ»€μŠ€ν…€ 초기.. 2021. 5. 28.
728x90