Скажем, у меня есть Framework под названием SwiftKit, который имеет метод класса расширения UIView с именем someClassMethod и свойство с именем someProperty внутри него:
// SwiftKit
public extension UIView {
class func someClassMethod() {
print("someClassMethod from Swift Kit")
}
var someProperty: Double {
print("someProperty from Swift Kit")
return 0
}
}
И у меня также есть Framework под названием SwiftFoundation, который также имеет метод класса расширения UIView с именем someClassMethod и свойство с именем someProperty внутри него:
// SwiftFoundation
public extension UIView {
class func someClassMethod() {
print("someClassMethod from Swift Foundation")
}
var someProperty: Double {
print("someProperty from Swift Foundation")
return 0
}
}
Затем я создал проект, внедряющий эти Framework, все, если я импортирую оба из них в один и тот же быстрый файл и получаю доступ к этим расширениям, я получил "Неоднозначное использование ошибки someProperty/someClassMethod()", даже если я указал вызов в виде SwiftKit.UIView.someClassMethod():
import UIKit
import SwiftKit
import SwiftFoundation
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.view.someProperty // error: Ambiguous use of 'somProperty'
SwiftKit.UIView.someClassMethod() // error: Ambiguous use of 'someClassMethod()'
}
}
Если я импортирую только один из них, неоднозначная ошибка исчезает, но происходит более странное:
import UIKit
import SwiftKit
//import SwiftFoundation
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.view.someProperty
SwiftKit.UIView.someClassMethod()
}
}
Консоль распечатывается:
someProperty из Swift Foundation
someClassMethod из Swift Foundation
Мой вопрос: как я могу назвать эти расширения (как метод класса/экземпляра, свойства) без двусмысленного? Если я не могу, значит ли это, что мы должны добавлять префикс к именам расширений, как обычно, с Objective-C?