我在
Swift中构建一个iOS应用程序,并绘制了Apple提供的
Lister示例项目.
Lister使用两个模型对象:List和ListItem.我发现他们都不会在初始化器中调用super.init(),即使它们是NSObject子类.
然而,在Lister的Objective-C版本中,两个模型对象(AAPLList和AAPLListItem)都调用[super init].
Swift编程语言清楚地表示:“指定的初始化程序必须从其直接超类调用指定的初始化程序”(初始化程序初始化器链接的规则1)
这里发生了什么?为什么这是一个异常,如果你不应该总是在一个子类中调用super.init(),那么什么规则适用?