0

今天我非常喜欢我的新手教程,在 Swift 中创建我自己的可以生成对象实例的类。我希望通过在这些知识的基础上开始使用 Apple 的 Cocoa Touch API 来变得更好。然而,在阅读诸如 UIViewController、UIResponder 和 UITouch 之类的类引用时,我注意到这些类没有生成实例的 init 函数。我认为这一切都是错误的,还是可以安全地假设这些类是要被子类化的?如果它们要被子类化,那么我是否需要编写自己的 init 函数才能生成实例并使用它?

一点背景知识,我正在考虑小型乐高积木,只要我遵守 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,因为它看起来令人兴奋。

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

4

1 回答 1

1

UIViewController确实有几种init方法。

像这样的类UITouch没有任何公共 init方法,因为您不应该创建自己的实例。

像这样的类UIViewController意味着被子类化。直接使用的实例并不常见UIViewController

并且不要忘记,在 Swift 中,任何子类都会获取init其父类的方法,除非您显式添加自己的init方法。那么子类只有init你显式添加的方法。

于 2017-01-05T00:39:51.617 回答