2

这个问题使我发现了这个问题。

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

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) 
    }
}

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

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

4

1 回答 1

0

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

于 2014-11-22T19:42:01.247 回答