-
[Swift] νλ‘ν μ½(protocol)iOS/Swift 2022. 8. 31. 23:57
π‘ νλ‘ν μ½
- νΉμ μν μ νκΈ° μν λ©μλ, νλ‘νΌν° λ±μ μ²μ¬μ§μ΄λ€(μ±νλ°λ νμ μ΄ κ΅¬νμ μ½μνλ€)
- νλ‘ν μ½μ ꡬνλΆ {}κ° μκΈ° λλ¬Έμ λ¨λ μΌλ‘ μ¬μ©μ΄ λΆκ°νλ€ -> ν΄λμ€, ꡬ쑰체μ ν¨κ» μ¬μ©
- νλ‘ν μ½μ μ¬μ©νλ©΄ ν΄λμ€, ꡬ쑰체 λ± λ€λ₯Έ νμ μ΄λλΌλ κ°μ μΈν°νμ΄μ€λ‘ λ€μν ꡬνμ΄ κ°λ₯νλ€!
νλ‘ν μ½ μ μ
protocol νλ‘ν μ½ μ΄λ¦ { νλ‘ν μ½ μ μ }
νλ‘ν μ½ μ±ν
// ꡬ쑰체, ν΄λμ€, μ΄κ±°νμμμ ꡬν λ°©λ² struct SomeStruct: AProtocol, AnotherProtocol { // ꡬ쑰체 μ μ } class SomeClass: AProtocol, AnotherProtocol { // ν΄λμ€ μ μ } enum SomeEnum: AProtocol, AnotherProtocol { // μ΄κ±°ν μ μ
νλ‘ν μ½μ νλ‘νΌν° μꡬ
νλ‘ν μ½μ μμ μ μ±νν νμ μ΄ μ΄λ€ νλ‘νΌν°λ₯Ό ꡬνν΄μΌ νλμ§ μꡬν μ μλ€!
βοΈ νλ‘νΌν° μꡬμ¬νμ νμ var ν€μλλ₯Ό μ¬μ©ν λ³μ νλ‘νΌν°λ‘ μ μ
- μ½κΈ°/μ°κΈ° λͺ¨λ κ°λ₯ν νλ‘νΌν°: {get set}
- μ½κΈ° μ μ© νλ‘νΌν°: {get}
- μ°κΈ° μ μ© νλ‘νΌν°: β
βοΈ νμ νλ‘νΌν°λ₯Ό μꡬνκΈ° μν΄μ static ν€μλ μ¬μ©
** νμ νλ‘νΌν°(static): μΈμ€ν΄μ€(κ°μ²΄)κ° μμ±λ λ λ§λ€ κ° μΈμ€ν΄μ€μ ν λΉλλ νλ‘νΌν°μ λ€λ₯΄κ² ν΄λΉ νμ μΌλ‘ μμ±λ λͺ¨λ μΈμ€ν΄μ€μμ μ¬μ©νλ λ¨ νλμ νλ‘νΌν°(μ΄λμ λΌμ΄μ β)
protocol SomeProtocol { var settableProperty: String { get set } var notNeedToBeSettableProperty: String { get } } protocol AnotherProtocol { static var someTypeProperty: Int { get set } static var anotherTypeProperty: Int { get } }
μ΄λμ λΌμ΄μ μꡬ
μ΄λμ λΌμ΄μ μ 맀κ°λ³μλ₯Ό μ§μ νλ μν λ§ μννκ³ , ꡬνμ νμ§ μλλ€
βοΈ required μλ³μλ₯Ό λΆμΈ μμ² μ΄λμ λΌμ΄μ λ‘ κ΅¬ν
protocol Talkable { var topic: String { get set } func talk(to: Person) init(name: String, topic: String) }
** λ§μ½ ν΄λμ€ μμ²΄κ° μμλ°μ μ μλ final ν΄λμ€λΌλ©΄ required μλ³μ λΆμ¬μ€ νμβ
βοΈ requiredμ override μλ³μ λͺ¨λ λͺ μ
** λ§μ½ νΉμ ν΄λμ€μ νλ‘ν μ½μ΄ μꡬνλ μ΄λμ λΌμ΄μ κ° μ΄λ―Έ μλ μν©μμ κ·Έ ν΄λμ€λ₯Ό μμλ°μ ν΄λμ€κ° μλ€λ©΄,
ν΄λμ€ μ μ© νλ‘ν μ½
νλ‘ν μ½μ μμ 리μ€νΈμ class ν€μλλ₯Ό μΆκ°νμ¬ ν΄λμ€ νμ μλ§ μ±νλ μ μλλ‘ μ ννλ€
protocol νλ‘ν μ½λͺ : class, Readable {
}'iOS > Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] μ΅μ€ν μ (extension) (0) 2022.09.03 [Swift] κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° (0) 2022.09.01 [Swift] νμ μΊμ€ν (type casting) (0) 2022.08.24 [Swift] μμ (Inheritance) (0) 2022.08.22 [Swift] μλΈμ€ν¬λ¦½νΈ(subscript) (0) 2022.08.20