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)
}
}
我假设这也将是两个扩展的问题,它们将具有相同签名的方法添加到同一类。
有没有办法解决这个问题?或者这只是一个错误?
最佳答案
您不能声明两个具有相同签名的扩展方法。尝试覆盖 Array 的下标方法,它不会让你。如果您想使用另一个更改签名的初始化器并让 API 的用户调用另一个初始化器。
关于swift - 消除跨 Swift 模块的初始化器歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26665539/