如何在pod库中混合使用Swift和Objective-C?
我已经使用命令创建了一个新的swift lib pod:pod lib create MixSwiftObjectiveC found from 在这个pod库中,我需要使用一个用Objective-C编写的代码。 如果我有一个单独的“普通”项目,我只会在头文件中包含导入…-bridgeing header.h。 pod库是否有一个等价物?Swift和Objective-C能在pod库中混合使用吗 例如,我创建了这个github: 为了运行该示例,您需要XCode版本7.0 beta 6和Swift 2.0如何在pod库中混合使用Swift和Objective-C?,objective-c,cocoapods,swift2,Objective C,Cocoapods,Swift2,我已经使用命令创建了一个新的swift lib pod:pod lib create MixSwiftObjectiveC found from 在这个pod库中,我需要使用一个用Objective-C编写的代码。 如果我有一个单独的“普通”项目,我只会在头文件中包含导入…-bridgeing header.h。 pod库是否有一个等价物?Swift和Objective-C能在pod库中混合使用吗 例如,我创建了这个github: 为了运行该示例,您需要XCode版本7.0 beta 6和Swi
谢谢你的帮助 我确认了一个有效的解决方案,下面是它的工作原理:
public
。您可能需要咨询source\u文件中包含伞形头(在框架中用于向swift公开objc代码)。当您创建一个框架项目时,Xcode会自动为您的框架创建一个伞形标题。如果框架名称为NVMDummy
,则标题为NVMDummy.h
ViewController.m
中执行了以下操作:
@import MyPodLibMixingOjbcAndSwift;
// in viewDidLoad
// use objc code in MyLib -> OK...
// use swift code in MyLib -> OK...
在你的
.podspec
中,你应该有如下内容:
s.source\u文件='MixSwiftObjectiveC/Classes/*'
- 转到finder中的
目录文件夹,确保并放入您的文件(objc和swift)MixSwiftObjectiveC/Classes/
- 清理生成文件夹
- 导航到您的
文件夹并进行Example..
(因为您的pod安装
文件夹下应该有一个Example..
,其中包含您的pod文件
pod)MixSwiftObjectiveC
- 你不应该再有这个问题了
- 这在cocoapod中实际上是非常直接的。您只需要在.podspec文件中定义这些行
s.source_files = '{YOUR_POD}/Classes/**/*.{swift,h,m}'
s.public_header_files = '{YOUR_POD}/Classes/**/*.h'
“s.public_头文件”会自动创建一个伞形头文件,该文件也可用于桥接头文件。就这样,您应该能够在swift类中使用ObjC类
您还可以在ObjC中使用swift类。您只需要在ObjC文件中导入-swift头
#import <YOUR_POD/YOUR_POD-Swift.h>
#导入
只要依赖关系是单向的,你就不会面临任何问题。刚刚遇到这个问题,现在有更新吗?不幸的是,我不得不在Pod库中不混合使用这两种语言。太遗憾了。。。我有一个用objc编写的私有pod库,它足够大,不可能一下子用Swift重写。我现在还得用objc。你能澄清一下第4步吗?在podspec文件中会是什么样子?你能在你的示例项目中添加一个吗?干杯@adrian schönig编辑了我的答案。在我的回答中使用演示程序确认它可以工作后,我停止了研究,因为我还需要支持iOS 7一段时间。还有一些问题需要调查。我在我的回购协议中记录了演示,我们可以在那里继续讨论这个问题。谢谢!在我按照您的指示操作之后,我仍然不断收到关于我的Swift类未被找到的相同错误,但事实证明,我错过了文档中的重要步骤,即“确保在Swift
中公开您需要在Objective-C中访问的内容”。这起到了作用!非常感谢。对我来说,关键是模块的@import,现在我可以看到objective-c和swift类