Swift框架:从objective-C子项目中公开头文件

时间:2015-07-19 00:23:31

标签: ios xcode swift

我的swift cocoa touch框架包含子项目,它是一个Objective-C静态库。 (WhirlyGlobe-MaplyComponent)。

现在,我希望将它的类暴露给我的快速代码 如果我只是将#include "MaplyComponent.h"添加到伞标题中,即使在构建设置中将Include of non-modular header inside framework module设置为Allow Non-modular Includes In The Framework Modules,我也会得到YES

另一种方式:Some post 展示如何创建一个module.map文件,以便将标题包装到Swift模块中,我做了完全相同的事情:

module MaplyComponent [system] {
    header "/Users/hurden/Developer/repositories/OSMViewer/OSMKit/WhirlyGlobe/WhirlyGlobeSrc/WhirlyGlobe-MaplyComponent/include/MaplyComponent.h"
    export *
}

然后import MaplyComponent将使一切正常,我可以调用API,运行和测试,但Xcode的SourceKitService将无法解析实际的头 - 没有代码完成,变量类型是<<error-type>>等等,所以在我看来这不是正确的方式。

有什么建议吗? (肯定应该如何在伞头中导入子项目的标题)

更新
我可以解决链接二进制分发而不是源代码分发的问题。 (但它涉及从框架内部到项目的可怕标头复制。Link to original answer。)

0 个答案:

没有答案