λ°μν
νλ‘ν μ½ (Protocol)
- νΉμ μμ μ΄λ κΈ°λ₯μ μ ν©ν λ©μλ, νλ‘νΌν° λ° κΈ°ν μꡬμ¬νμ ‘μ½μ’μ μ μ
- ν΄λμ€(class), ꡬ쑰체(struct), μ΄κ±°ν(enum)μμλ μ΄λ ν νλ‘ν μ½μ μ±ννμ¬ ν΄λΉ νλ‘ν μ½μ μꡬμ¬νμ μ€μ λ‘ κ΅¬ν κ°λ₯
- νλ‘ν μ½μ μꡬμ¬νμ μΆ©μ‘±μν€λ λͺ¨λ νμ μ ν΄λΉ νλ‘ν μ½μ μ€μνλ€ νΉμ λ°λ₯Έλ€κ³ ν¨
- νλ‘ν μ½μ μ±μ©ν νμμ μꡬμ¬νμ λ°λμ λͺ¨λ ꡬνν΄μΌ ν¨
- νλ‘ν μ½μ νλ‘ν μ½ κ° μμμ μ§μνλ©°, ν΄λμ€μ λ¬λ¦¬ λ€μ€ μμλ μ§μ
νλ‘ν μ½ μ±ννκΈ°
- ν΄λμ€, ꡬ쑰체, μ΄κ±°νμμ μ μν νλ‘ν μ½μ μ±ννκΈ° μν΄μλ μ½λ‘ (:)μ μ¬μ©
- νλμ νμ μμ λ€μμ νλ‘ν μ½μ μ±ννκΈ° μν΄μλ μ½€λ§(,)λ₯Ό μ¬μ©
- ν΄λμ€μμ μμκ³Ό νλ‘ν μ½ μ±νμ λμμ νλ €λ©΄ μμλ°μΌλ €λ ν΄λμ€λ₯Ό λ¨Όμ λͺ μν λ€, μ±νν νλ‘ν μ½ λͺ©λ‘μ μμ±
protocol SomeProtocol {}
// νλ‘ν μ½ μ±ν
struct SomeStructure: SomeProtocl {}
// λ€μμ νλ‘ν μ½ μ±ν
struct SomeStructure: SomeProtocol, AnotherProtocol {}
// SomeSuperClassλ₯Ό μμ λ°κ³ μκ³ , SomeProtoclμ μ±νν ν΄λμ€ μ μ
class SomeClass: SomeSuperClass, SomeProtoc {}
νλ‘ν μ½ νλ‘νΌν°
- νλ‘νΌν°λ νμ κ³Ό μ΄λ¦λ§ μμ±
- gettable/settable μ¬λΆλ₯Ό μμ±
- νλ‘νΌν°λ varλ‘ μ μΈ
νλ‘ν μ½ λ©μλ
- λ©μλ μμ± κ°λ₯
- μΌλ°μ μΈ λ©μλ μλ λ¬λ¦¬ λ³Έλ¬Έμ μμ±νμ§ μμ
protocol SomeProtocol {
var a: Int { get }
var b: Int { get set }
func setNumber(a: Int, b: Int)
func add() -> Int
}
class SomeClass: SomeProtocol {
var a: Int = 0
var b: Int = 0
func setNumber(a: Int, b: Int) {
self.a = a
self.b = b
}
func add() -> Int {
return a + b
}
}
νλ‘ν μ½ μ΄λμ λΌμ΄μ
- νλ‘ν μ½μμλ νμλ‘ κ΅¬νν΄μΌ νλ μ΄λμ λΌμ΄μ λ₯Ό μ§μ κ°λ₯
- μ΄λμ λΌμ΄μ κ° μλ νλ‘ν μ½μ μ±νν νμ μμλ ν΄λΉ μ΄λμ λΌμ΄μ μ required ν€μλλ₯Ό μμ±ν΄μΌ ν¨
protocol SomeProtocol {
init(someParameter: Int)
}
class SomeClass: SomeProtocol {
required init(someParameter: Int) {
}
}
νλ‘ν μ½ μμ
- νλ‘ν μ½μ νλ μ΄μμ νλ‘ν μ½μ μμλ°μ κΈ°μ‘΄ νλ‘ν μ½μ μꡬμ¬νλ³΄λ€ λ λ§μ μꡬμ¬νμ μΆκ°ν μ μμ
- νλ‘ν μ½ μμ λ¬Έλ²μ ν΄λμ€μ μμ λ¬Έλ²κ³Ό μ μ¬νμ§λ§, νλ‘ν μ½μ ν΄λμ€μ λ€λ₯΄κ² λ€μ€μμμ΄ κ°λ₯
ν΄λμ€ μ μ© νλ‘ν μ½
- ꡬ쑰체, μ΄κ±°νμμ μ¬μ©νμ§ μκ³ ν΄λμ€ νμ μλ§ μ¬μ©κ°λ₯ν νλ‘ν μ½μ μ μΈνκΈ° μν΄μλ νλ‘ν μ½μ AnyObject ν€μλλ₯Ό μΆκ°
λ°μν
'β¨οΈ Language > swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] ν΄λ‘μ (Closure) (0) | 2023.02.06 |
---|---|
[Swift] μ΅μ€ν μ (Extensions) (0) | 2023.02.06 |
[Swift] assertμ guard (0) | 2023.02.06 |
[Swift] νμ μΊμ€ν (0) | 2023.02.06 |
[Swift] ν΄λμ€(Class)μ ꡬ쑰체(Struct) (0) | 2023.02.06 |