我已经使用以下命令创建了一个新的swift lib pod:在https://guides.cocoapods.org/making/using-pod-lib-create.html中找到创建MixSwiftObjectiveC容器库
在这个pod库中,我需要使用Objective-C编写的代码。如果我有一个单独的“普通”项目,我只需要在头文件中包含导入... -Bridging-Header.h。有没有一个pod库的等价物?Swift和Objective-C可以在一个pod库中混合吗?
作为一个例子,我创建了这个github:https://github.com/crarau/MixSwiftObjectiveC为了运行该示例,您需要XCode版本7.0 beta 6和Swift 2.0
谢谢你的帮助!
3条答案
按热度按时间2sbarzqh1#
注意:此答案已过时,不再相关。请参阅https://stackoverflow.com/a/61183908/3160507以获取最新的答案。
我确定了一个可行的解决方案,其工作原理如下:
1.它必须是iOS 8+只(当然...)
1.使用Xcode创建可可Touch框架
1.开发框架,根据需要混合swift代码和objc代码。确保将所有需要公开的swift类标记为
public
。您可能需要参考文档1.创建一个podspec文件,提供必要信息(请参阅here了解pod的外观)。(在您的框架中用于向swift公开objc代码)。当您创建框架项目时,Xcode会自动为您的框架创建一个伞状标题。如果您的框架名称是
NVMDummy
,报头是NVMDummy.h
。1.推动pod并将其作为框架集成到项目中。
1.测试你的pod库。我创建了一个演示应用,添加了我的pod库,在我的
ViewController.m
中,我做了以下操作:演示应用程序工作,所以我得出结论,它的工作。
以下是演示:https://github.com/axl411/TestNVMDummy
7hiiyaii2#
这在cocopod中实际上是非常直接的。您只需要在.podspec文件中定义这些行。
“s.public_header_files”会自动创建一个伞状头文件,它也可以作为桥接头文件。这样你就可以在swift类中使用ObjC类了。
你也可以在ObjC中使用swift类。你只需要在ObjC文件中导入-swift头。
只要依赖关系是单向的,就不会遇到任何问题。
sbdsn5lh3#
在您的
.podspec
中,您应该有类似以下的内容:一个月一个月
MixSwiftObjectiveC/Classes/
目录文件夹以确认并将您的文件(objc和swift)Example..
文件夹并执行pod install
(因为您的Example..
文件夹下应该有一个Podfile
,该文件夹包含您的MixSwiftObjectiveC
窗格)