UITouch class 缺少初始化函数

UITouch class missing init function

我非常喜欢今天的新手教程,内容是在 Swift 中创建我自己的 classes,它可以生成对象实例。我希望通过在这些知识的基础上开始使用 Apple 的 Cocoa Touch API 来变得更好。然而,在阅读 class 参考资料(例如 UIViewController、UIResponder 和 UITouch)时,我注意到这些 classes 没有初始化函数来生成实例。我是不是认为这一切都是错误的,或者可以安全地假设这些 classes 应该被 subclassed?如果它们是 subclassed 那么我是否需要编写自己的 init 函数来生成一个实例并使用它?

一些背景知识,我在考虑小型乐高积木,只要我遵守 Apple 的抽象配方(class 参考文档)并放置所需的类型,我就可以构建任何我想要的东西例如字符串、双精度数、整数等在正确的位置使对象活跃起来。我是否根据 Apple 的对象正确地考虑了这一点?

这是我今天在教程中所做的一个示例,它有一个 init 函数,我可以在其中生成这种类型的对象,以及我用乐高积木思考的原因:

struct Location: Equatable {

    let name: String

    let coordinate: CLLocationCoordinate2D?

    init(name: String, coordinate: CLLocationCoordinate2D? = nil) {
        self.name = name
        self.coordinate = coordinate
    }

}

我看了swift编程指南,有了一个大概的了解。我想尽快开始享受 Cocoa Touch 因为它看起来很刺激。

我知道我是一个菜鸟,可能对一些不应该触摸键盘的白痴来说,所以提前感谢您的任何澄清。

UIViewController 确实有几个 init 方法。

类 像 UITouch 没有任何 public init 方法,因为你不应该创建你的自己的实例。

类 就像 UIViewController 一样是为了被子classed。直接使用 UIViewController 的实例并不常见。

并且不要忘记在 Swift 中,任何子 class 都会获得其父 class 的 init 方法,除非您明确添加自己的 [=11] =] 方法。然后 subclass 只有您显式添加的 init 方法。