【发布时间】:2015-06-14 01:13:52
【问题描述】:
这段代码在 Swift 中是合法的:
class Snapper : NSObject {
var anim : UIDynamicAnimator
init(referenceView:UIView) {
self.anim = UIDynamicAnimator(referenceView:referenceView)
// super.init()
}
}
请注意,在我的初始化程序中,我没有调用 super.init();我注释掉了那行。但是 Swift 编译器不会抱怨。为什么?我认为有一条规则,您指定的初始化程序必须调用其超类的指定初始化程序。我有一个超类,即 NSObject。
这是一个错误吗?还是将 NSObject 作为您的超类是一种特殊情况?如果是这样,为什么?我意识到 NSObject 没有需要初始化的实例变量,但是我们怎么知道它的init 没有做其他需要做的事情呢? Swift 不应该在这里给出编译错误吗?
【问题讨论】:
标签: swift initialization nsobject