导入了错误的Module-Swift.h标头会生成错误信息

时间:2019-02-10 22:59:37

标签: ios objective-c swift cocoapods

所以我到处都是swift和objc。 我有一个名为Renetik的开发平台。 它有一些用swift编写的扩展,但主要是目标C代码。 现在,我编写了一些类,并在主项目中很好地使用了它,并希望将其移至Renetik开发吊舱。当我在Renetik-Swift.h中以某种方式执行此操作时,将生成错误的导入,并且项目将无法编译。

#import <Renetik/Renetik.h>

然后我做了很多实验。并发现当我实际上从pod本身定义的swift类函数类型返回时,生成了错误的导入。当我尝试在主要是Objective-C的Development Pod中做到这一点时,这种情况就会发生。当我尝试修改某些类以返回pod本身中定义的objc类时,其他swift扩展和类也可以使用。

当一切正常时,我将编写示例。这样编译就可以了,我可以从主项目中调用函数testMe:

@objc public class ReplaceMe: NSObject {
    @objc public func testMe() {
        let variable = CSResponse<NSObject>()
        variable.cancel()
    }
}

就像我之前所说的那样,只是产生了这个小的更改和错误的标题:

@objc public class ReplaceMe: NSObject {
    @objc public func testMe() -> CSResponse<NSObject> {
        let variable = CSResponse<NSObject>()
        variable.cancel()
        return variable
    }
}

我在Podfile中使用了use_frameworks!,因为use_modular_headers!出于其他原因不起作用。我可以在Github项目中设置分支,因为这是开源的,所以会发生这种情况。

1 个答案:

答案 0 :(得分:0)

因此,似乎唯一没有破解的可能是仅为Swift文件创建其他pod。在podspec依赖项中定义要发布的版本,并在宿主应用程序podfile中使用:path =>添加依赖项。