-
[Swift] DelegationiOS/π Swift 2021. 1. 26. 09:35
Delegation μ `class` λ `struct` κ° μμ μ μ± μ μ€ μΌλΆλ₯Ό λ€λ₯Έ νμ μ μΈμ€ν΄μ€μκ² μμ (hand-off or delegate) νλ λμμΈ ν¨ν΄μ λλ€.
μ΄ λμμΈ ν¨ν΄μ μμλ μ± μμ μΊ‘μννλ νλ‘ν μ½μ μ μνλ κ²μΌλ‘ ꡬνν μ μμ΅λλ€.
κ·Έ κ²°κ³Όλ‘ νλ‘ν μ½μ μ±νν νμ ( μ΄ νμ μ delegate λΌκ³ λΆλ¦ λλ€ ) μ μμλ°μ κΈ°λ₯λ€μ μ 곡μ 보μ₯ν©λλ€.
μ¦, μμν νμ (delegating objcet) μ κΈ°λ₯μ μμλ°μ νμ (delegate) μ΄ μ 곡ν©λλ€.
Delegationμ λ€μκ³Ό κ°μ μν©μ μ¬μ©ν©λλ€:
1. νΉμ actionμ λν λ°μμ νκΈ° μν΄ μ¬μ©λκ±°λ,
λ³΄ν΅ ~Delegate λΌλ μ΄λ¦μ κ°μ§ νλ‘ν μ½μ λλ€.
2. μμ€μ νμ μ μ νμμμ΄ μΈλΆ μμ€μμλΆν° λ°μ΄ν°λ₯Ό μ‘°νν λ μ¬μ©ν μ μμ΅λλ€.
λ³΄ν΅ ~DataSource λΌλ μ΄λ¦μ κ°μ§ νλ‘ν μ½μ λλ€.
μλμ μ½λλ μ£Όμ¬μ-κΈ°λ° λ³΄λκ²μμ μ¬μ©ν λκ°μ νλ‘ν μ½μ μ μνκ³ μμ΅λλ€.
protocol DiceGame { var dice: Dice { get } func play() } protocol DiceGameDelegate: AnyObject { func gameDidStart(_ game: DiceGame) func game(_ game: DiceGame, didStartNewTurnWithDiceRoll diceRoll: Int) func gameDidEnd(_ game: DiceGame) }
DiceGame νλ‘ν μ½μ μ£Όμ¬μλ₯Ό νμλ‘νλ μ΄λ ν κ²μμ΄λ μ±νν μ μλ νλ‘ν μ½μ λλ€.
κ΄λ ¨ κΈ: νλ‘ν μ½μ΄ μ μν μμ±μ κ°λ³μ±
DiceGameDelegate νλ‘ν μ½μ DiceGame μ μ§νμ μΆμ νλ μ©λλ‘ μ±νλ©λλ€.
νλ‘ν μ½μ class-only λ‘ λ§λ κ²μ ν΄λμ€κ° delegate μ μ½ν μ°Έμ‘°λ‘ μ μ₯ν΄μΌνλ€λ κ²μ μ μΈνλ κ²μ λλ€.
μ¦, κ°ν μ°Έμ‘° μ¬μ΄ν΄μ λ°©μ§νκΈ° μνμ¬ delegateλ μ½ν μ°Έμ‘°λ‘ μ μΈλ©λλ€.
class-only νλ‘ν μ½μ νλ‘ν μ½ μ μΈλΆ μ½λ‘ ( : ) λ€μ AnyObject λΆμ¬μ ꡬνν©λλ€.
λ!
π€π’[μ°μ§±μ iOS λΈλ‘κ·Έ]π΅π»
iOSλ₯Ό 곡λΆνλ©΄μ λ°°μ΄ λ΄μ©μ κΈ°λ‘νκ³ μμ΅λλ€.'iOS > π Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Computed Properties (κ³μ° μμ±) - Properties (0) 2021.02.02 Adopting a Protocol Using a Synthesized Implementation - Protocols (0) 2021.01.27 Checking Type & Downcasting - Type Casting (0) 2021.01.21 Type Casting Overview - Type Casting (0) 2021.01.21 [Swift] νμ μΌλ‘μμ νλ‘ν μ½ ( Protocol as Type ) (0) 2021.01.19