为什么会有这样的想法;事件侦听器“;在swift中,行动和协议之间有什么区别? 我的问题
作为一名正在学习swift的新程序员。我想知道为什么在事件侦听器的实现方式之间似乎存在任意的分歧 在一些教程中,有人指出,只需在故事板上的视图元素和视图控制器之间拖动即可创建动作(事件侦听器) 但在以后的教程中,我注意到某些类似事件侦听器的功能也以协议的形式实现为什么会有这样的想法;事件侦听器“;在swift中,行动和协议之间有什么区别? 我的问题,swift,xcode,swift4,Swift,Xcode,Swift4,作为一名正在学习swift的新程序员。我想知道为什么在事件侦听器的实现方式之间似乎存在任意的分歧 在一些教程中,有人指出,只需在故事板上的视图元素和视图控制器之间拖动即可创建动作(事件侦听器) 但在以后的教程中,我注意到某些类似事件侦听器的功能也以协议的形式实现 class ViewController: UIViewController, UIScrollViewDelegate { func scrollViewDidScroll(...) { ...
class ViewController: UIViewController, UIScrollViewDelegate {
func scrollViewDidScroll(...) {
...
}
}
我的问题
协议就像合同。当一个类型符合协议时,编译器可以对该类型的行为进行推理,而无需在编译时知道该类型在运行时实际是什么。例如,滚动视图在编译时“知道”可能有一个实例想知道滚动视图何时滚动。因此,它向该实例发送此消息 目标行动是完全不同的。使用目标动作模式,可以在对象之间创建连接。假设您在UI中有一个按钮,并将连接拖动到视图控制器。然后按钮有一个目标,当任何特定的事情发生时(例如内部触摸事件),按钮会向连接的元素发送一个动作。您甚至可以按此按钮查找所有已连接的目标
Runnable
),并且由于名称的自由选择而非常灵活
另一方面,委托具有更多的功能,并允许更精确地指定回调相反,Cocoa中动作方法的嵌套深度是平坦的。随着动作方法的增多,课堂变得越来越长,但单个方法不会变得更复杂。它们是不同的还是一个构建在另一个之上?不,它们是完全独立的。您是否可以将每个单独问题的答案重新格式化为不同的答案1)2)3)。我觉得这会增加清晰度,帮助我和其他人更好地理解你说的话。或者甚至提供一些简短的伪代码示例来说明您的观点。非常感谢。
class ViewController: UIViewController, UIScrollViewDelegate {
func scrollViewDidScroll(...) {
...
}
}