gpt4 book ai didi

ios - 委托(delegate)如何知道在有多个一致性的地方调用函数

转载 作者:行者123 更新时间:2023-11-28 15:38:20 29 4
gpt4 key购买 nike

我刚刚开始了解 iOS swift 中的委托(delegate)模式。如果我错了请纠正我,但这是我的理解:

委托(delegate)模式用于将任务委托(delegate)给另一个类,以保持类只有一个工作和一个工作,任何不相关的工作都将委托(delegate)给负责该工作的另一个类。现在这是令人困惑的部分:

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 类通过协议(protocol)来完成这项工作。现在这就是我感到困惑的地方。 B 类如何知道在哪里运行 func addTwoNumbers 函数?我的意思是我可以有另一个类称为 C 类并符合 Addition 协议(protocol),现在我有两个类符合 Addition 协议(protocol),B 类怎么知道去哪里?

谢谢!

最佳答案

当您调用 runAddition() 时类的方法B它什么都不做,因为没有为 delegate 设置值.

要使其工作,您需要分配任何类的实例,该类实现 Addition协议(protocol)。

例如,我们有 2 个类实现了 Addition协议(protocol):

class Calculator1: Addition {

func addTwoNumbers(_ number1: Int, _ number2: Int) {
print("Inside Calculator1 addTwoNumbers method")
// The rest of your code
}
}

class Calculator2: Addition {

func addTwoNumbers(_ number1: Int, _ number2: Int) {
print("Inside Calculator2 addTwoNumbers method")
// The rest of your code
}
}

现在,让我们创建前面类的 2 个对象:

let calculator1 = Calculator1()
let calculator2 = Calculator2()

让我们创建类 B 的实例:

let bob = B()

现在,让我们设置 bob 的委托(delegate)并调用runAddition()方法:

bob.delegate = calculator1
bob.runAddition()

runAddition() 的输出这里将是:

Inside Calculator1 addTwoNumbers method

现在,让我们为委托(delegate)设置另一个值,并调用 runAddition()再次:

bob.delegate = calculator2
bob.runAddition()

runAddition() 的输出这里将是:

Inside Calculator2 addTwoNumbers method

希望这对您有所帮助!

关于ios - 委托(delegate)如何知道在有多个一致性的地方调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44057185/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com