无法从该类的Swift扩展中的Objective-C类调用某些方法

时间:2019-04-03 16:55:26

标签: objective-c swift

我有一个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()

1 个答案:

答案 0 :(得分:1)

检查桥接标头中是否包含您的Objective-C类函数的返回类型(在您的情况下为MyObject.h)。 Swift不能使用桥接头中未包含返回类型的方法。