π 1 . νλ‘ν μ½(Protocol)
νλ‘ν μ½μ μμ΄λ‘ κ·μ½/νμ½μ½, μ¦ μ½μμ μλ―Ένλ€.
νμ μμ 곡ν΅μΌλ‘ μ 곡νλ λ©€λ² λͺ©λ‘μ΄λ€.
νλ‘ν μ½μ νμ μμ ꡬνν΄μΌνλ λ©€λ²κ° μ μΈλμ΄ μκ³ μ€μ ꡬνμ ν¬ν¨λμ΄ μμ§ μλ€.
ν΄λμ€μ ꡬ쑰체λ μ€κ³λμ λΉμ νλ€λ©΄, νλ‘ν μ½μ μꡬμ¬ν μ μμμ λΉμ ν μ μκ² λ€.
νμ μ ꡬνν λ μ¬λ¬κ°μ§ μꡬμ¬νλ€μ λͺ¨μλ μꡬμ¬ν(μ½μ/μν ) μ μμλΌκ³ 보면λλ€.
νΉμ μν μ νκΈ° μν λ©μλ, νλ‘νΌν°, κΈ°ν μꡬμ¬ν λ±μ μ μν΄λμ μ½μμ΄λ€.
ν΄λμ€, ꡬ쑰체, μ΄κ±°νμ΄ νλ‘ν μ½μ μ±ννκ³ λͺ¨λ μꡬμ¬νμ μΆ©μ‘±νλ©΄ νλ‘ν μ½μ μ€μνλ€κ³ νλ€ .
ν΄λμ€, ꡬ쑰체, μ΄κ±°νμ΄ νλ‘ν μ½μ μ±νν΄μ νΉμ κΈ°λ₯μ μ€ννκΈ° μν νλ‘ν μ½μ μꡬμ¬νμ μ€μ λ‘ κ΅¬νν μ μλ€.
νλ‘ν μ½μ μ€κ³λ μꡬμ¬ν(μ½μ/μν )λ§ μ ν΄ λμ κ²μ΄μ§ μμ§ μ€μ€λ‘ κΈ°λ₯μ ꡬννμ§ μλλ€.
λ©μλλ₯Ό μ μν λ λ©μλ μ΄λ¦κ³Ό 리ν΄κ°μ μ§μ ν μ μκ³ , { }(ꡬνμ½λ)λ μ μ§ μλλ€.
ꡬ체μ μΈ κ΅¬νμ νλ‘ν μ½μ μ±νν κ³³μμ νλ€.
λ°λΌμ, κ°λ°ν λλ μ΄λ€ κ°μ²΄κ° ν΄λΉ μν μ μνν μ§ μ νκ³
κ·Έ λ€μμ ν΄λΉ κ°μ²΄κ° κ·Έ μν μ μ΄λ»κ² ꡬνν μ§ μ νλ κ²μ νλ‘ν μ½μ μ±ννλ€κ³ νλ€.
νλ‘ν μ½μμλ μ΄λ¦κ³Ό νμ, gettable, settableμ λͺ μνλ€.
νλ‘νΌν°λ νμ varλ‘ μ μΈνλ€.
μμκ³Ό μ μ¬νμ§λ§ ν΄λμ€ μ΄μΈμ ꡬ쑰체λ μ΄κ±°νλ νλ‘ν μ½μ μ±νν μ μλ€.
μμμ λ€μ€ μμμ΄ λΆκ°νμ§λ§ νλ‘ν μ½μ λ€μ€ μμμ΄ κ°λ₯νλ€. (νμ₯μ±μ΄ λμ)
enum TypeName: ProtocolName, ... {
}
struct TypeName: ProtocolName, ... {
}
//ν΄λμ€κ° λ€λ₯Έ ν΄λμ€λ₯Ό μμνκ³ λμμ νλ‘ν μ½μ μ±μ©νκ³ μλ€λ©΄, μνΌν΄λμ€λ₯Ό λ¨Όμ λμ΄ν΄μΌνλ€.
class TypeName: SuperClass, ProtocolName, ... {
}
//νλ‘ν μ½ μ μ
//νλ‘ν μ½ μ±ν λ° κ΅¬ν
//ν΄λμ€μμ μ±ν
π 2. νλ‘ν μ½μ΄ μ νμνκ°?
ν΄λμ€λ νλμ ν΄λμ€λ§ μμμ΄ κ°λ₯νλ€. μ¦, λ€μ€μμμ΄ λΆκ°νλ€.
νμνμ§ μμ μμ ν΄λμ€μ μμ±μ΄λ λ©μλλ μμμ΄ λλ€.
ν΄λμ€μμλ§ μμμ΄ κ°λ₯νλ€.
=> ν΄λμ€μ μμμ λ¨μ μ 보μνκΈ° μν΄ νμ©ν νλ‘ν μ½μ κ°λ
κ°λ°νλ€ λ³΄λ©΄ λ€μν κ°μ²΄λ€μ λ§λ€κ² λλ€.
λ€μν κ°μ²΄κ°μ κ³΅ν΅ μν μ λ°κ²¬νκ² λκ³ , ν΄λΉ μν μ νμ λ κ°μ²΄μμλ§ μ¬μ©νμ§ μκ³
μ¬λ¬ κ°μ²΄λ‘ νμ₯μ΄ νμν λ, κ·Έ μν μ νλ‘ν μ½λ‘ μ μνλ€.
ν΄λΉ μν μ΄ νμν κ°μ²΄κ° λμ¬ λ λ§λ€, ν΄λΉ νλ‘ν μ½μ μ±νν΄μ μν μ μ€ μ μλ€.
νλ‘ν μ½μ νμ μΌλ‘ μ¬μ©ν μ μλ€ β
-> νλ‘ν μ½μ μ±νν κ²λ€μ μ¬μ©ν μ μλ€.
π 3. νλ‘ν μ½μ μμ
νλ‘ν μ½μ μμ λ°μ μ μλ€.
ν΄λμ€μ λ€λ₯΄κ² λ€μ€ μμμ΄ κ°λ₯νλ€.
μ¬λ¬ κ°μ μμμ΄ κ°λ₯νκΈ° λλ¬Έμ νλ‘ν μ½μ λ μκ³ λͺ ννκ² λλ μ μλ€.
μ¬μ¬μ©μ±λ λκ³ ν μ€νΈ κ°λ₯μ±λ λμμ§λ€.
π Reference
'π iOS > Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[ Swift κΈ°μ΄ λ¬Έλ² ] κ³ μ°¨ν¨μ - map, filter, reduce, forEach, compactMap, flatMap (0) | 2024.06.26 |
---|---|
[ Swift κΈ°μ΄ λ¬Έλ² ] ν΄λ‘μ (Closure) (0) | 2024.06.25 |
[ Swift κΈ°μ΄ λ¬Έλ² ] Property - μ μ₯ μμ± / κ³μ° μμ± / νμ μμ± (0) | 2024.06.24 |
[ Swift κΈ°μ΄ λ¬Έλ² ] ν΄λμ€ μμ (0) | 2024.06.04 |
[ Swift κΈ°μ΄ λ¬Έλ² ] ν΄λμ€(Class)μ ꡬ쑰체(Struct) (0) | 2024.05.19 |