gpt4 book ai didi

swift - 有一段代码涉及到Delegate Up,希望我理解正确

转载 作者:行者123 更新时间:2023-11-30 10:01:45 26 4
gpt4 key购买 nike

委托(delegate)对我来说是一个新概念。据我了解,它要求别人为我做一些工作。然后我将一些任务委托(delegate)给他。

class Vehicle {
var numberOfWheels = 0
var description: String {
return "\(numberOfWheels) wheel(s)"
}
}

class Bicycle: Vehicle {
override init() {
super.init() //# Delegate up
numberOfWheels = 2
}
}

代码super.init()是类初始化中的一个向上委托(delegate)操作。子类初始化器首先调用父类(super class)的初始化器。父类(super class)的默认初始值设定项将整数 0 分配给变量 numberOfWheels。这是第一阶段初始化。之后,子类初始化程序的重写操作通过 numberOfWheels = 2 进一步自定义变量。

问题我的理解是否有错误?我希望我在这里使用的委托(delegate)描述是正确的。

请纠正我这里的任何错误和误解。谢谢

最佳答案

您在这里所描述的与委托(delegate)模式完全无关,它是继承的概念。您的自行车类继承自车辆。 Vehicle 已经实现了一些代码,因此您可以使用父类(super class)(继承自的类)的代码,而无需再次编写。您的父类(super class)没有定义的初始值设定项,因此 super.init() 甚至不会执行任何操作。您应该阅读 inheritance并尝试更好地理解这个概念。

这就是委托(delegate)的作用:您对委托(delegate)的想法是正确的。它允许您将一些工作“外包”给另一个类(class)。这可以通过协议(protocol)来实现。委托(delegate)必须遵守委托(delegate)协议(protocol),以确保它具有您想要调用的方法。您在这里使用协议(protocol)而不是继承类,因为您不关心具体方法的实现,您只想告诉您的委托(delegate)来处理情况,由委托(delegate)知道该怎么做。

委托(delegate)最常用于 macOS 和 iOS 的 MVC 应用程序。您可以在Apple Documentation中阅读有关委托(delegate)的更多信息。 。还有几十个教程like this one在互联网上展示授权在实践中如何运作。

关于swift - 有一段代码涉及到Delegate Up,希望我理解正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38132480/

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