【问题标题】:There is a code involves the Delegate Up, I hope I understand it right有一段代码涉及到Delegate Up,希望我理解正确
【发布时间】:2016-06-30 20:16:48
【问题描述】:

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

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() 是类初始化中的委托操作。子类初始化器首先调用超类的初始化器。超类的默认初始化程序将整数 0 分配给变量 numberOfWheels。这是第一阶段初始化。之后,子类的初始化器的重写动作进一步通过numberOfWheels = 2自定义变量。

问题我的理解有什么错误吗?我希望我在这里使用的 delegate up 描述是正确的。

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

【问题讨论】:

标签: swift class delegates initialization


【解决方案1】:

您在这里描述的内容与委托模式完全无关,它是继承的概念。您的自行车类继承自 Vehicle。 Vehicle 已经实现了一些代码,因此您可以使用超类(继承自的类)的代码,而不是再次编写它。您的超类没有定义的初始化程序,因此 super.init() 甚至不会做任何事情。你应该阅读inheritance 并尝试更好地理解这个概念。

委托的作用如下:您对委托的概念是正确的。它允许您将一些工作“外包”给另一个班级。这可以通过协议来实现。委托必须符合委托协议,以确保它具有您要调用的方法。您在这里使用的是协议而不是继承的类,因为您不关心特定方法的实现,您只想告诉您的委托来处理一种情况,这取决于委托知道该做什么。

委托最常用于 macOS 和 iOS 的 MVC 应用程序。您可以在Apple Documentation 中阅读有关委派的更多信息。互联网上还有数十个教程like this one,展示了委托在实践中的工作原理。

【讨论】:

  • 感谢您的帮助和解释")
猜你喜欢
  • 1970-01-01
  • 2019-08-23
  • 1970-01-01
  • 2019-11-27
  • 2019-08-18
  • 1970-01-01
  • 2011-01-03
  • 2016-01-25
  • 2020-07-13
相关资源
最近更新 更多