我正在Swift中构建一个iOS应用程序,并在Apple提供的Lister示例项目上绘图。在Swift的NSObject子类的初始化程序中调用super.init()
Lister使用两个模型对象:List和ListItem。我发现他们都不会在初始化器中调用super.init()
,即使它们是NSObject的子类。
但是,在Lister的Objective-C版本中,两个模型对象(AAPLList和AAPLListItem)都会调用[super init]
。
的雨燕编程语言明确规定,“指定的初始化程序必须调用从他们的直接超类的指定初始化方法。”(在初始化初始化程序链接的规则1)
这是怎么回事?为什么这是一个例外,如果你不应该总是在子类中调用super.init(),什么规则适用?