Cocoapod使用混合和匹配Swift和Objective-c代码

时间:2017-12-14 17:41:57

标签: objective-c swift frameworks cocoapods mix-and-match

我的任务是将现有应用的模型层拆分为单独的框架。我尝试使用cocoapods来制作一个我将导入回主应用程序的pod。

我遇到的问题是我将代码拆分出来的应用程序是Swift和Objective-c的混合体。它并没有干净利落,因此Swift代码使用了Objective-c代码,而Objective-c代码则使用了Swift代码。

我很难理解如何实现这一目标,或者它是否可能实现?当你在一个框架中时,桥接头和生成的* -swift.h似乎不会以相同的方式工作。然后pods是另一个复杂功能。

我试图在这里尝试一个简单的项目。 SPOILER ALERT。它没有编译。 https://github.com/Megatron1000/TestMixAndMatch

我试图找到一个以同样纠缠的语言方式设置的cocoapod的例子但是还没有能力。任何人都可以指出我可以作为一个例子吗?

2 个答案:

答案 0 :(得分:0)

我有一个包含Obj-C和Swift代码的(私有)pod。在podspec中,我只是像这样添加它们

N = int(np.log(len(a))/np.log(2)) # number of iterations
counts = (len(a)*((0.5)**(np.arange(N)+1))).astype(int)

从技术上讲,在Xcode中,这个项目是一个框架。

Here您可以找到如何在项目中将它们组合的技术细节。 从技术上讲,如果您创建一个框架,您需要在框架的标题中包含Obj-C标头 如果你想在你的Obj-C类中使用Swift方法,你需要将它们包含在

  s.source_files        = 'Project/*.{swift}',
                          'Project/legacy/*.{h,m}'

如果您正在构建框架或只是

#import <ProductName/ProductModuleName-Swift.h>

如果您正在处理常规项目

答案 1 :(得分:-1)

在这种情况下,最好的方法可能是简化框架的设计,只重写Objective-c遗留代码信息swift。您提到代码库已经部分在Swift中,这将使完成转换变得更加容易。