我有一个来自简单协议的类。它看起来像这样:
protocol Interface {
func f() -> Void;
}
class TestInterface : Interface {
var arr: [Int] = [];
func f() {
// stuff
}
}
不幸的是,我不能创建这个类,因为Swift没有初始化程序(虽然默认的一个就足够了)。
但是,更严重的问题是尝试定义初始化程序。最初我尝试定义一个空的初始化程序。 Swift告诉我这是非法的,因为我没有调用超级初始化程序(即使它是一个协议......)。很好,我想。我打电话给super.init()
。然后Swift告诉我这是非法的,因为base是一个协议而不是一个类,所以它没有init
函数。所以我不能定义一个init函数,因为我必须在我自己的init函数中调用一个不存在的init函数。并且正常的init函数随机无法使用。
我怎么能创建一个超级简单类的实例?
答案 0 :(得分:0)
这实际上是一个完全不相关的问题。该协议实际上曾经是一个类。由于一个不相关的原因,导入此类的模块崩溃了Swift编译器,并破坏了元数据。因此,当Swift开始阅读此类/协议的元数据时,它与编译器不一致并且混淆了。
一旦我解决了源模块的问题(实际上已经注意到它,感谢糟糕的XCode错误报告),这对我来说不再是一个问题。