消除Swift模块中的初始化程序

时间:2014-10-31 00:09:07

标签: swift namespaces swift-extensions

This question让我发现了这个问题。

如果我在不同模块的同一个类中有两个具有相同签名的初始值设定项,我该如何指定要调用哪个?要使用与该问题相同的示例,请说我声明了一个像这样的便利初始化器:

extension UIStoryboard {
    convenience init(name: String, bundle: NSBundle?) {
        // ... do custom things ...

        // This line causes infinite recursion. (How) Can I specify which 
        // initializer I want to call? 
        self.init(name: name, bundle: bundle) 
    }
}

我认为这也是两个扩展的问题,它们将具有相同签名的方法添加到同一个类中。

有没有办法解决这个问题?或者这只是一个错误?

1 个答案:

答案 0 :(得分:0)

您不能声明具有相同签名的两个扩展方法。尝试重写Array的下标方法,它不会让你。如果您想使用另一个初始化程序来更改签名并让API的用户调用其他初始化程序。