iOS swiftのデリゲートパターンを理解し始めたばかりです。私が間違っている場合は私を訂正しますが、私の理解はここにあります:デリゲートは、複数の適合がある場所で関数を呼び出す場所をどのように知っていますか?
委任パターンは、あるジョブと1つのジョブだけを持つクラスを維持するためにタスクを別のクラスに委譲するために使用され、この仕事に責任を持つクラス。今ここに混乱を招く部分です:
protocol Addition {
func addTwoNumbers(_ number1: Int, _ number2: Int)
}
class A: Addition {
func addTwoNumbers(_ number1: Int, _ number2: Int) {
print("The number is: \(number1 + number2)")
}
}
class B {
let apple = 10
let orange = 20
var delegate: Addition?
func runAddition() {
delegate?.addTwoNumbers(apple, orange)
}
}
let bob = B()
bob.runAddition()
クラスBは、追加のタスクを実行する必要があり、代わりに機能を実装するので、私は、クラスAは、プロトコルを介して仕事をするもらおう。今私は混乱しているところです。クラスBはfunc addTwoNumbers
関数の実行場所をどのように知っていますか?私はクラスCと呼ばれる別のクラスを持つことができ、Addition
プロトコルに準拠することができます。今度はAddition
プロトコルに準拠した2つのクラスがあります。
ありがとうございました!
わかりません。コードを実行すると、addTwoNumbers()が呼び出されないことがわかります。あなたは* bob.delegateに値を*割り当てる必要があります - つまり、*あなた*はbobに呼び出しを委譲するように指示します。 –