我有一个Objective-C课,像这样:
@interface MyClass: NSObject { }
- (MyObject *)coolMethod;
@end
@implementation MyClass
- (MyObject *)coolMethod {
return [self doCoolStuff];
}
@end
...以及一个Swift扩展,例如:
extension MyClass {
@objc func addedMethodInSwift() {
let coolObj = coolMethod() // <<<< compiler error - method not found
}
}
由于编译器无法找到coolMethod()
的实现,因此无法编译代码,但是可以从Swift扩展中调用Objective-C类中的某些其他方法。
我已经检查过,Objective-C头文件包含在项目的桥接头中,因此它应该对Swift可见。该方法肯定在头文件中可见。
为什么不能从Swift扩展名中调用coolMethod()
?
答案 0 :(得分:1)
检查桥接标头中是否包含您的Objective-C类和函数的返回类型(在您的情况下为MyObject.h
)。 Swift不能使用桥接头中未包含返回类型的方法。