UITouch类缺少初始化函数

时间:2017-01-05 00:32:19

标签: ios swift apple-documentation

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

一点点背景,我只想依靠Apple的抽象食谱(类参考文档)并放置它,我可以用小小的方式思考我可以构建任何我喜欢的东西。在正确的位置使用诸如字符串,双精度,整数等所需的类型,以使对象变得活跃。我是否正确地根据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,因为它看起来令人兴奋。

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

1 个答案:

答案 0 :(得分:1)

UIViewController确实有几种init方法。

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

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

并且不要忘记在Swift中,除非您明确添加自己的init方法,否则任何子类都会获取其父类的init方法。然后子类只有你明确添加的init方法。