νλ‘ν μ½μ μλ‘κ°μ 'μ½μ'μ΄λ€.
μ’ λ μμΈν λ§νλ©΄ νΉμ μμ
μ΄λ κΈ°λ₯μ μ ν©ν λ©μλ, νλ‘νΌν° λ° κΈ°ν μꡬμ¬νμ μ²μ¬μ§(blue print)λ₯Ό μ μνλ κ²
μ μλ―Ένλ€.
μ μλ
μ΄λΌλ νλ‘ν μ½μ΄ μλ€κ³ κ°μ νλ€.
λ³μμλ κ°λ₯΄μΉλ κ³Όλͺ©μ΄ μκ³ teaching()κ³Ό giveHomework()λΌλ λ©μλκ° μλ€κ³ νμ λ
Protocolμ κ³Όλͺ©, teaching(), giveHomework()λ₯Ό ν΄μΌνλ€λ μ½μλ§ κ΅¬μ±ν λΏ μ€μ§μ μΈ νλμ μ μνμ§λ μλλ€.
κ·Έ μ€μ§μ μΈ νλ μ¦, ꡬνμ μ μλ νλ‘ν μ½μ μ€μνλ κ³³μμ μ΄λ£¨μ΄μ§λ€.
κ³Όνμ μλ, κ΅μ΄μ μλμ λͺ¨λ κ°κ° "κ³Όν", "κ΅μ΄"λΌλ κ³Όλͺ©λͺ μ κ°μ§ κ²μ΄λ©°, teaching()κ³Ό giveHomework()λ₯Ό ꡬνν΄μΌνλ€.
Delegateλ νλ‘ν μ½λ‘ ꡬνμ΄ λλ€.
ν΄λμ€ λΏλ§ μλλΌ κ΅¬μ‘°μ²΄, μ΄κ±°ν λν νλ‘ν μ½μ μ±ννμ¬ νΉμ κΈ°λ₯μ μ€ννκΈ° μν νλ‘ν μ½μ μꡬμ¬νμ ꡬνν μ μλ€.
-
νλ‘ν μ½μ νλ‘νΌν°κ° μ μ₯ νλ‘νΌν°μΈμ§, μ°μ° νλ‘νΌν°μΈμ§ λͺ μ νμ§ μλλ€.
-
λμ { get } μΈμ§ { get set }μΈμ§ λͺ μν΄μ£Όμ΄μΌ νλ€.(setterλ§ μλ건 μλ€).
- { get }λ§ μꡬν κ²½μ° λͺ¨λ μ’ λ₯μ νλ‘νΌν°(μ°μ° νλ‘νΌν°λ μ μ₯ νλ‘νΌν°λ )μμ μΆ©μ‘± & νμνλ€λ©΄ setterλ₯Ό μΆκ°μ μΌλ‘ ꡬν κ°λ₯
- { get set }μΌ κ²½μ°μλ μμ(let) μ μ₯ νλ‘νΌν°λ₯Ό μ¬μ©νκ±°λ { get }λ§ κ΅¬νν΄μλ μλλ€.
-
νλ‘νΌν° μꡬμ¬νμ νμ varλ‘ μ μΈλμ΄μΌ νλ€.
-
νμ νλ‘νΌν°λ νλ‘ν μ½ λ΄μμ
static
ν€μλλ₯Ό λΆμ¬μΌ νλ€.(class
X)
-
'μ μ'λ§ μ΄λ£¨μ΄μ§ κ²
protocol SomeProtocol { func someMethod() func anotherMethod(name: String, age: Int) -> Int func protocolMethod() -> String }
-
νμ νλ‘νΌν°λ₯Ό νλ‘ν μ½μ μ μν κ²½μ°,
static
ν€μλλ₯Ό μ λμ¬λ‘ λΆμ΄μΌ νλ€. -
- μΈμ€ν΄μ€μ μν λ©μλλ₯Ό μμ , λ³κ²½νκΈ° μν΄μλ func μμ mutatingμ΄λΌλ ν€μλλ₯Ό λμ΄μΌ νλ€.
- λ¨, νλ‘ν μ½μ μ€μνλ μ£Όμ²΄κ° κ΅¬μ‘°μ²΄μ μ΄κ±°νμΌ κ²½μ°λ§ mutating ν€μλλ₯Ό λΆμ΄λ©° ν΄λμ€μ κ²½μ°μλ λΆμ΄μ§ μμλ λλ€. κ·Έ μ΄μ λ Value TypeμΈ κ΅¬μ‘°μ²΄μ μ΄κ±°νκ³Ό λ¬λ¦¬ ν΄λμ€λ Reference TypeμΌλ‘ λ³ΈλλΆν° λ©μλ λ΄μμ νλ‘νΌν° κ°μ λ³κ²½μ΄ κ°λ₯νκΈ° λλ¬Έμ mutating ν€μλλ₯Ό μλ΅ν μ μλ€.
protocol SomeProtocol { mutating func SomeMethod(_ num: Int) } struct SomeStruct: SomeProtocol { var x = 0 mutating func SomeMethod(_ num : Int) { x += num } } class SomeClas: SomeProtocol { var x = 0 // mutating ν€μλ μλ΅ func SomeMethod(_ num: Int) [ x += num ] }
-
νλ‘ν μ½μ νλ‘ν μ½μ μ€μνλ €λ νμ μκ² νΉμ ν μ΄λμ λΌμ΄μ λ₯Ό ꡬννλλ‘ μꡬν μ μλ€. μΌλ° μ΄λμ λΌμ΄μ μ λμΌνμ§λ§
{ body }
λ₯Ό μμ±νμ§ μλλ€- νλ‘ν μ½μ μ€μνλ μ£Όμ²΄κ° classμΌ κ²½μ° μ΄λμ
λΌμ΄μ μμ
required
λ₯Ό μ¬μ©νλ©΄ νλ‘ν μ½μ μ€μνλ ν΄λμ€μ λͺ¨λ νμ ν΄λμ€λ€λ μ΄λμ λΌμ΄μ μꡬμ¬ν ꡬνμ 보μ₯λ°μ μ μλ€. final
ν€μλλ₯Ό μ¬μ©νλ€λ©΄ override λΆκ°νκΈ° λλ¬Έμrequired
μ¬μ©ν νμ μμ- κ°μ μ΄μ μμ ꡬ쑰체λ
required
νμ μμ
protocol SomeProtocol { init(someParameter: Int) } class SomeClass: SomeProtocol { // requiredλ₯Ό μ¬μ©νλ©΄ νλ‘ν μ½μ μ€μνλ ν΄λμ€μ λͺ¨λ νμ ν΄λμ€λ€λ μ΄λμ λΌμ΄μ μꡬμ¬ν ꡬνμ 보μ₯λ°μ μ μλ€. required init(someParameter: Int) { // initializer implementation goes here } } struct SomeStruct : SomeProtocol { init(someParameter: Int) { // initializer implementation goes here } }
- νλ‘ν μ½μ μ€μνλ μ£Όμ²΄κ° classμΌ κ²½μ° μ΄λμ
λΌμ΄μ μμ