我今天非常喜欢我的新手教程,在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,因为它看起来令人兴奋。
我知道我是一个菜鸟,可能是一个不应该触摸键盘的白痴,所以请提前感谢您的任何澄清。
答案 0 :(得分:1)
UIViewController
确实有几种init
方法。
UITouch
等类没有任何公共 init
方法,因为您不应该创建自己的实例。
像UIViewController
这样的类意味着要进行子类化。直接使用UIViewController
的实例并不常见。
并且不要忘记在Swift中,除非您明确添加自己的init
方法,否则任何子类都会获取其父类的init
方法。然后子类只有你明确添加的init
方法。