Cip*_*rau 8 objective-c cocoapods swift2
我使用以下命令创建了一个新的swift lib pod:pod lib create MixSwiftObjectiveC from https://guides.cocoapods.org/making/using-pod-lib-create.html
在这个pod lib中,我需要使用用Objective-C编写的代码.如果我有一个单独的"普通"项目,我只需在头文件中包含导入... -Bridging-Header.h.是否有一个pod lib的等价物?Swift和Objective-C可以在pod lib中混合使用吗?
作为一个例子,我创建了这个github:https://github.com/crarau/MixSwiftObjectiveC 为了运行这个例子,你需要XCode Version 7.0 beta 6和Swift 2.0
谢谢你的帮助!
这在 cocoapod 中实际上非常简单。您只需在 .podspec 文件中定义这些行。
s.source_files = '{YOUR_POD}/Classes/**/*.{swift,h,m}'
s.public_header_files = '{YOUR_POD}/Classes/**/*.h'
Run Code Online (Sandbox Code Playgroud)
“s.public_header_files”会自动创建一个伞形标头,该标头也可用于桥接标头。就这样,您应该能够在 swift 类中使用 ObjC 类。
您还可以在 ObjC 中使用 swift 类。您只需要在 ObjC 文件中导入 -swift 标头即可。
#import <YOUR_POD/YOUR_POD-Swift.h>
Run Code Online (Sandbox Code Playgroud)
只要依赖是一种方式,您就不会遇到任何问题。
我确认了一个可行的解决方案,它是这样工作的:
public。您可能需要查阅文档source_files在podspec文件中包含Umbrella Header(在您的框架中用于将objc代码公开化)。创建框架项目时,Xcode会自动为框架创建一个伞形头。如果您的框架名称为NVMDummy,则标题为NVMDummy.h。测试您的pod lib。我创建了一个演示应用程序,添加了pod lib,然后在其中执行ViewController.m了以下操作:
@import MyPodLibMixingOjbcAndSwift;
// in viewDidLoad
// use objc code in MyLib -> OK...
// use swift code in MyLib -> OK...
Run Code Online (Sandbox Code Playgroud)该演示应用程序有效,因此我得出结论。
这是演示:https : //github.com/axl411/TestNVMDummy
在你的.podspec你应该有类似的东西:
s.source_files = 'MixSwiftObjectiveC/Classes/*'
MixSwiftObjectiveC/Classes/查找器中的目录文件夹以确保放置您的文件(objc 和 swift)Example..文件夹并执行 a pod install(因为Podfile您的文件夹下应该有一个Example..包含您的MixSwiftObjectiveCPod 的文件夹)