在Swift中,如果扩展中的非 @objc声明与原始类型中的成员名称相同,会导致编译器报错“不支持覆盖来自扩展的非 @objc 声明。”。这是因为Swift扩展不能覆盖原始类型的非 @objc声明。
要解决这个问题,有两种方法:
class MyClass {
func myMethod() {
print("Original method")
}
}
extension MyClass {
func myMethodExtension() {
print("Extension method")
}
}
class MyClass {
func myMethod() {
print("Original method")
}
}
extension MyClass {
@objc func myMethodExtension() {
print("Extension method")
}
}
注意:在添加 @objc声明时,需要确保被扩展的类型和扩展方法都可以在Objective-C中使用。