如何用objective-c和swift开发多语言框架

如何用objective-c和swift开发多语言框架,objective-c,swift,frameworks,Objective C,Swift,Frameworks,嗯,我想知道如何将框架的某些部分从objective-c移动到swift,而不会带来很大的痛苦 好的,据我所知: 1) 任何项目都不是一个框架 您制作了Swift桥接头.h或CatsAndGuns桥接头.h,并将许多导入项目放入其中 您可以在构建设置->(搜索Swift)->Objective-C桥接头中确保自己。把你的名字写在这里 同时检查打包->定义模块->是 2) 框架 好吧,您希望将objective-c和swift结合起来开发框架 这里您有一个难题:您不能在框架目标中使用桥接头 所

嗯,我想知道如何将框架的某些部分从objective-c移动到swift,而不会带来很大的痛苦

好的,据我所知:

1) 任何项目都不是一个框架

  • 您制作了
    Swift桥接头.h
    CatsAndGuns桥接头.h
    ,并将许多导入项目放入其中
  • 您可以在构建设置->(搜索Swift)->Objective-C桥接头中确保自己。把你的名字写在这里
  • 同时检查打包->定义模块->是
2) 框架

好吧,您希望将objective-c和swift结合起来开发框架

这里您有一个难题:您不能在框架目标中使用桥接头

所以,你来到谷歌或文档,开始阅读

好吧,现在你对你的知识感到自由和华丽,但是。。你还是不知道怎么做

  • 创建伞形标题并命名为:
    YourProjectName Swift.h
    <代码>CatsAndGuns Swift.h,正常
  • 使其在框架级别可见,因此,导航到右栏并放置
    targetmembership->your_framework\u target(当然,在我的例子中是CatsAndGuns.framework)->Public
  • 一切都会好起来的?请记住将每次导入设置为:
    #导入
好的,让我们检查一下框架中的Rocket.h文件。它是一个项目可见文件,因此,是否可以通过伞形标题(哦,
模块swift.h
)访问它

现在我有:

  • 项目中没有桥接标头(据我所知)
  • 手动创建的伞形标题,项目可见
    Rocket.h
    #导入
  • swift类中出现错误,无法看到objective-c声明
  • 产品模块名称,不带空格

我在你的问题中读到了挫折吗?:-)我也经历过这个。到目前为止,我认为,目前不可能在框架内公开私有/内部头/类型。仍然在寻找为什么桥接头不能在框架中使用的解释。生成的“myframeworkswift.h”头文件就可以工作了。因此,为了使互操作性在框架中工作,所有混合使用的头/类型都必须公开——这打破了框架的一个关键特性。