使用混合Swift和amp;创建框架Objective-C代码

时间:2015-08-13 23:08:07

标签: ios objective-c swift sdk package

我有一个混合代码(objective-c和Swift)的项目,我需要将其打包为框架。它还使用了一些外部框架。

我的伞标题有很多导入到我使用的框架的不同标题,以及我的项目中的objective-c源代码(以便Swift代码可以访问它)。我也有一个快速文件,例如MyFramework.swift,它有一些我希望向框架用户公开的代码。

然而,框架编译时,当我尝试在另一个Swift项目中使用它时,我无法访问MyFramework.swift的内容。即使文件存在(使用Swift源代码)在框架产品中也是如此!

然而,我能够从公共标题中访问objective-c代码。所以我试着在Objective-c中用MyFramework.swift编写代码(MyFramework.h& MyFramework.m),因为我认为在objective-c和swift中暴露代码可能是一个问题(尽管从我读到的内容 - 它不应该)。这样就可以访问这个类中的对象,但后来我遇到了一个链接器错误:

  

架构x86_64的未定义符号:
  " _OBJC_CLASS _ $ _ MyObject",引自:         __TZFC12TestFW6MyObject20testfMS0_FCSo16UIViewControllerT_   在ViewController.o ld:找不到架构x86_64的符号

这实际上发生在我试图引用的每个公共swift类中。我确保这些文件存在于"编译源和#34;项目设置的构建阶段下的列表,这不是问题。

我很无能为力。有任何想法吗? 感谢。

1 个答案:

答案 0 :(得分:0)

要解决您的项目,需要检查两件事。

  1. 您的项目中是否有正确的“有效架构” (下面的第1张图片)和
  2. 您是否正确使用BridgingHeader     为在同一个项目中使用Swift和Obj-C而创建(第二个     如下图)?
  3. Project Settings - Valid Architecture

    Swift Compiler - Bridging Header