【发布时间】:2017-05-18 20:25:57
【问题描述】:
我刚刚开始了解 iOS swift 中的委托模式。如果我错了,请纠正我,但这是我的理解:
委派模式用于将任务委派给另一个班级,以保持班级只有一个工作和一个工作,任何不相关的工作将被委派给负责该工作的另一个班级。现在这是令人困惑的部分:
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 函数?我的意思是我可以拥有另一个名为 class C 并符合 Addition 协议的类,现在我有两个符合 Addition 协议的类,B 类怎么知道去哪里?
谢谢!
【问题讨论】:
-
它不知道。如果您运行代码,那么您会注意到 addTwoNumbers() 永远不会被调用。你必须为
bob.delegate分配一个值——这意味着你告诉bob调用哪个代理。