-
[Swift] νλ‘ν μ½ κ°μ (Protocol Overview)iOS/π Swift 2021. 1. 15. 14:13
μ°Έκ³ μλ£: Protocols - swift.org
κ°μ
νλ‘ν μ½μ μꡬμ¬νμ λλ€.
νλ‘ν μ½μλ ꡬνν΄μΌνλ λ©€λ²λ€μ λͺ©λ‘μ΄ λμ΄λμ΄ μμ΅λλ€.
νλ‘ν μ½μ μ±μ©ν νμμ μꡬμ¬νμ λ°λμ λͺ¨λ ꡬνν΄μΌ ν©λλ€.
" When you adopt protocol, you should conform to protocol."
μ΄κ²μ Adopting Protocol μ΄λΌκ³ νλ©° `νλ‘ν μ½μ λ°λ₯Έλ€`, `νλ‘ν μ½μ μ±μ©νλ€` λΌκ³ ννν©λλ€.
νλ‘ν μ½μλ ꡬν λ΄μ©μ λ€μ΄κ° μμ§ μκ³ , μ±μ©ν νμ μ΄ μ§μ ꡬνμ ν©λλ€.
νλ‘ν μ½μ νλ‘ν μ½ κ° μμμ μ§μνλ©°, ν΄λμ€μ λ¬λ¦¬ λ€μ€ μμλ μ§μν©λλ€.
μ¦, νλμ νλ‘ν μ½μ μ¬λ¬κ°μ νλ‘ν μ½μ λμμ μμλ°μ μ μμ΅λλ€.
enum, struct, class κ° νλ‘ν μ½μ μ±νν μ μμ΅λλ€.
Syntax
protocol Something { func doSomething() } //Adopting Protocols struct Size: Something { func doSomething() { // code } }
classκ° μλΈν΄λμ±νλ©΄μ νλ‘ν μ½λ μ±μ©νλ κ²½μ°, SuperClassλ₯Ό λ¨Όμ λμ΄ν©λλ€.
νλ‘ν μ½ μꡬμ¬ν μ€ λ©μλλ₯Ό ꡬνν μ, λ©μλ ν€λλ§ νλ‘ν μ½κ³Ό λκ°μ΄ ꡬννλ©΄ λ©λλ€.
μ¦, λ©μλ λ°λλ μμ λ‘κ² κ΅¬νν΄λ λ©λλ€.
Class-Only Protocol
ν΄λμ€λ§ μ±μ©κ°λ₯ν νλ‘ν μ½μ λ§λ€μ΄ μ€ μ μμ΅λλ€.
μΈλ―Έμ½λ‘ λ€μ `AnyObject` λ§ λΆμ¬μ£Όλ©΄ λ©λλ€.
//Class-Only Protocols protocol SomethingObject: AnyObject, Something { } // struct Value: SomethingObject { // μλ¬ λ©μμ§ ( Class-Only Protocols μ±μ© μλ ) // } class Object: SomethingObject { func doSomething(){ } }
μ μ½λμμ SomethingObject νλ‘ν μ½μ Class-Only Protocolμ λλ€.
μ΄ νλ‘ν μ½μ κ΅¬μ‘°μ²΄κ° μ±μ©ν μ μ»΄νμΌ μλ¬κ° λ©λλ€.
λ!
π€π’[μ°μ§±μ iOS λΈλ‘κ·Έ]π΅π»
iOSλ₯Ό 곡λΆνλ©΄μ λ°°μ΄ λ΄μ©μ κΈ°λ‘νκ³ μμ΅λλ€.λ€μ κΈ: Property Requirements - Protocol
'iOS > π Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] νλ‘ν μ½ λ©μλ μꡬμ¬ν (Method Requirements) (0) 2021.01.18 [Swift] νλ‘ν μ½ μμ± μꡬμ¬ν (Property Requirements) (0) 2021.01.15 Closure Capture List - Memory (0) 2021.01.05 Memberwise Initializer - Initializer (0) 2021.01.05 Initializers - Initializer (0) 2021.01.05