Cocoapod使用Mix和Match Swift和Objective-c代码

问题描述 投票:0回答:2

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

我遇到的问题是我正在拆分代码的应用程序是Swift和Objective-c的混合。它没有干净利落,所以Swift代码使用Objective-c代码,Objective-c代码使用Swift代码。

我很难理解如何实现这一目标,或者甚至是否可能?当你在框架中时,桥接头和生成的* -swift.h看起来似乎没有相同的方式。然后豆荚是另一个并发症。

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

我试图找到一个cocoapod的例子,它以相同的纠缠语言方式设置,但却无法完成。任何人都可以指出一个我可以用作例子吗?

objective-c swift frameworks cocoapods mix-and-match
2个回答
0
投票

我有一个包含Obj-C和Swift代码的(私有)pod。在podspec我只是简单地添加它们

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

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

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

#import <ProductName/ProductModuleName-Swift.h>

如果你正在建立一个框架或简单

#import "ProductModuleName-Swift.h"

如果你正在做一个常规项目


-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.