μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 0μ΄λμ΄μλκΈΈ
- duno
- discardableResult
- concurrency
- νλ‘κ·Έλλ¨Έμ€
- Swift
- Til
- URLSession
- binarySearch
- GroupBy
- APPJAM
- λμ κ³νλ²
- algorithm
- SOPT
- SQL
- GCD
- algoritm
- DynamicProgramming
- κΈ°μ΄λ¬Έλ²
- dfs
- μ΄μ§νμ
- μ°μνμ€λΆλΆμμ΄μν©
- κ³ λμ kit
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- BFS
- HAVIT
- SwiftUI
- SwiftUI Tutorials
- IOS
- SwiftUI νν 리μΌ
- Today
- Total
suvera-dev π₯¦
Swift) νλ‘ν μ½ μ§ν₯ νλ‘κ·Έλλ° λ³Έλ¬Έ
μ°λ¦¬κ° iOS κ°λ°μ νλ©΄μ μ°λ Swift μΈμ΄λ νλ‘ν μ½ μ§ν₯ μΈμ΄ λΌκ³ νμ£ !
νν μκ³ μλ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ μ¬λ¬Όμ κ°μ²΄λ‘ νμ±νμ¬
곡ν΅μ μ κ°λ λͺ¨λ κ³³μμ μμλ°λ κ°μ²΄ λ΄λΆμ λ‘μ§μ μΊ‘μν ν©λλ€.
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ SuperClassμ μ’ μμ μ΄λΌλ μ κ³Ό
Value Typeμ μ¬μ©ν μ μλ€λ κ²μ΄ λ¨μ μΈλ°μ !
λ, λ¨ νλμ SuperClass λ§ μμν μ μκΈ° λλ¬Έμ μκ°μ΄ μ§λλ©΄ κΈ°λ₯λ νμ₯λλ―λ‘
μ΄μ λ°λΌ 볡μ‘λκ° λμμ§κ³ κ΄λ¦¬λ μ΄λ €μ μ§κ² λ©λλ€.
νλ‘ν μ½ μ§ν₯ νλ‘κ·Έλλ°μ νμν λΆλΆλ§ νλ‘ν μ½λ‘ λΆλ¦¬ν΄μ λ§λ€ μ μκ³ ,
λ€μ€ νλ‘ν μ½μ ꡬν ν μ μμ΅λλ€ !
λ, νλ‘ν μ½ κ·μΉμ class, struct, enumμ μ μ©ν μ μκΈ° λλ¬Έμ
νμ₯ λΆλΆμμλ OOPλ³΄λ€ μ μ°νλ€κ³ ν μ μκ² μ£ ~
μ€μννΈλ λλΆλΆ κ΅¬μ‘°μ²΄λ‘ κΈ°λ³Έ νμ μ΄ κ΅¬νλμ΄ μμ΅λλ€ !
String, Int, Float, Date, URL λ±λ±. μ΅ν μ¬μ©νκ³ μλ λ°μ΄ν° νμ μ λͺ¨λ ꡬ쑰체μ΄κ³ ,
Array, Set, Dictionary λν κ΅¬μ‘°μ²΄λ‘ κ΅¬νμ΄ λμ΄μμ΅λλ€.
κ·Έλ°λ°, ꡬ쑰체λ ν΄λμ€μ λ¬λ¦¬ μμμ΄ λΆκ°λ₯ ν©λλ€.
κ·Έλ¬λ©΄ μμλ λμ§ μλ κ΅¬μ‘°μ²΄λ‘ μ΄λ»κ² λ€μν κ³΅ν΅ κΈ°λ₯μ κ°μ§ μ μμκΉμ ?
λ°λ‘ Protocol κ³Ό Extensionμ΄ μκΈ° λλ¬Έμ΄μ£ !
μμ
protocol Talkable {
var topic: String { get set }
func talk(to: Self)
}
struct Person: Talkable {
var topic: String
var name: String
func talk(to: Person) {
print("\(topic)μ λν΄ \(to.name)μκ² μ΄μΌκΈ°ν©λλ€")
}
}
μμ μ½λμ κ°μ΄ Talkable μ΄λΌλ νλ‘ν μ½μ μμ±νκ³ Personμμ μ΄ νλ‘ν μ½μ μ±νν©λλ€ !
νλ‘ν μ½ μ±ν μ νλ‘ν μ½μ΄ μꡬνλ μ¬νμ λͺ¨λ ꡬνν΄μ€μΌκ² μ£ .. !
Personμ λ΄λΆ μ½λλ₯Ό μμ§ λͺ»νλλΌλ,
Talkableμ μ±ννκ³ μμΌλ talk(to: ) λ©μλλ₯Ό νΈμΆνλκ² κ°λ₯ν©λλ€.
λ, μλμ κ°μ΄ μ¬λ¬κ°μ νλ‘ν μ½μ μ±ννλ κ²μ΄ κ°λ₯ν©λλ€.
protocol Eatable {
func eat()
}
protocol Moveable {
func run()
func walk()
}
struct Person: Talkable, Eatable, Moveable {
var topic: String
var name: String
func talk(to: Person) {}
func eat(){}
func run(){}
func walk(){}
}
νμν κΈ°λ₯μ νλ‘ν μ½λ‘ λ¬ΆμμΌλ‘μ¨ κΈ°λ₯μ λͺ¨λνκ° κ°λ₯ν΄μ§λλ€ !
κ·Όλ° Person λ§κ³ λ λ€λ₯Έ νμ μμλ μ±ννκ³ μΆλ€λ©΄,
λ§€λ² μꡬμ¬νμ ꡬνν΄μΌλκΈ° λλ¬Έμ μ€λ³΅λλ μ½λκ° λ°μνκ² λ©λλ€.
μ΄λ₯Ό λ°©μ§νκΈ° μν΄ νλ‘ν μ½μ Extensionμ 미리 μꡬμ¬νλ€μ ꡬνν΄ λ μ μμ΅λλ€.
μ΄κ²μ νλ‘ν μ½μ μ΄κΈ°κ΅¬ν μ΄λΌκ³ ν©λλ€ !
protocol Talkable {
var topic: String { get set }
func talk(to: Self)
}
// μ΅μ€ν
μ
μ μ¬μ©ν νλ‘ν μ½ μ΄κΈ° ꡬν
extension Talkable {
func talk(to: Self) {
print("\(to)! \(topic)")
}
}
μ΄λ κ² μ΅μ€ν μ μΌλ‘ 미리 ꡬνν΄λλ©΄,
νλ‘ν μ½μ μ±ννκΈ°λ§ ν΄λ κ·Έ νμ μ κΈ°λ₯μ΄ μΆκ°λμ΄ μ¬μ©ν μ μκ² λ©λλ€ !!
λ§μ½μ νλ‘ν μ½ μ΄κΈ° ꡬνκ³Ό λ€λ₯Έ λμμ ν΄μΌνλ€λ©΄,
κ·Έμ κ·Έ νμ μ νλ‘ν μ½μ μꡬμ¬νμ μ¬μ μν΄μ£Όλ©΄ λ©λλ€.
νλ‘ν μ½ μ±νλ§μΌλ‘λ κ·Έ κΈ°λ₯μ μ¬μ©ν μ μκ² νλ‘ν μ½ μ΄κΈ°κ΅¬νμ μ ν΄λλκ²
νλ‘ν μ½ μ§ν₯ νλ‘κ·Έλλ°μμ μ€μν λΆλΆμ΄λΌκ³ ν©λλ€ π
λν, OOPμ SuperClassμ λ¬λ¦¬ κΈ°λ₯λ€μ λΆλ¦¬νμ¬ Protocol Extensionμ
μμ±ν μ μκΈ° λλ¬Έμ SuperClassμ λ¨μΌν λ¬Έμ μ μ λν ν΄κ²°μ± μ΄ λ μ μμ κ² κ°μ΅λλ€ :)
μ°Έκ³ ν λΈλ‘κ·Έ
'Language > Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°κ³Ό Swift - Struct, Class, Property, Method (0) | 2023.03.30 |
---|---|
Swift) SOLID μμΉ in Swift (4) | 2022.04.14 |
Swift ) κΈ°μ΄ λ¬Έλ² 6μΌμ°¨ - Class μ Struct (2) | 2022.02.10 |
Swift ) Closure (0) | 2022.02.09 |
Swift ) @discardableResult λ? (4) | 2022.02.08 |