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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cocoapod使用Mix和Match Swift和Objective-c代码相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

答案

我有一个包含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"

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

另一答案

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

以上是关于Cocoapod使用Mix和Match Swift和Objective-c代码的主要内容,如果未能解决你的问题,请参考以下文章

iOS + Swift:使用 cocoapod 的桥接头不起作用

sh 使用Terminal安装SQLite.swift CocoaPod

将 Objective-C 框架(CocoaPod)导入 Swift?

Travis CI 构建 [Cocoapod Swift] 失败,没有“这样的模块...”错误

移动到 cocoapod 时,Swift Routing 枚举崩溃

使用 Swift 构建 Cocoapod 并依赖于 Objective-C 框架