Ios “公共swift类进口”;“私人”;混合语言(ObjC+;Swift)动态框架中的模块
我有一个动态框架Ios “公共swift类进口”;“私人”;混合语言(ObjC+;Swift)动态框架中的模块,ios,objective-c,swift,frameworks,swift-framework,Ios,Objective C,Swift,Frameworks,Swift Framework,我有一个动态框架MyFramwork.framework,该框架的项目中有标记为Protected(在MyFramwork.framework内部使用)和Public(由应用程序外部使用)的Swift代码和ObjC头。另外,MyFramwork.framework是应用程序中的嵌入式框架 按照这里提到的步骤,我创建了一个 module MyFramwork_Private { header "../...h" ... export * } 具有所有受保护的标题(SWI
MyFramwork.framework
,该框架的项目中有标记为Protected(在MyFramwork.framework内部使用)和Public(由应用程序外部使用)的Swift代码和ObjC头。另外,MyFramwork.framework是应用程序中的嵌入式框架
按照这里提到的步骤,我创建了一个
module MyFramwork_Private {
header "../...h"
...
export *
}
具有所有受保护的标题(SWIFT\u INCLUDE\u路径
=modulemap文件所在目录的路径)
还有一个带有所有公共标题的PublicHeaders.h
(我在我的伞形标题MyFramwork.h
中导入)
我如何使公共Swift类/结构能够在应用程序中使用MyFramwork私有代码?
如果我从MyFramwork导入swift文件中的MyFramwork\u Private,则在构建MyFramwork.framework时,应用程序将尝试访问在模块MyFramwork\u Private中定义的私有头,但构建失败,因为应用程序无法看到受保护的头我也一直在努力解决这个问题,这就是我发现的对我起作用的原因:
模块MyFramework\u Private{
导出*
}
SWIFT\u INCLUDE\u路径=$(SRCROOT)/MyFramework
MODULEMAP\u PRIVATE\u FILE=$(SRCROOT)/MyFramework/MyFramework.PRIVATE.MODULEMAP
在此之后,您应该可以开始了,使用您的框架的应用程序现在应该清楚地了解MyFramework_Private是什么,并且您的内部Swift文件可以访问私有标题。让我知道它是如何为您工作的,如果可以的话,我很乐意提供帮助。我写了这个脚本,也许它可以帮助其他使用objc swift框架的人更好地组织他们的公共/私人标题,它遵循了nsomar RecandEdit不适合我的原则…:(,我收到一个swiftc错误退出1 bla bla。我将在一个小项目中尝试更多,然后继续我的项目,当我有更多的时间时,可能有一个不同的问题,我现在还不知道如何阅读。目前我刚刚公开了标题(2-3)我感兴趣的。不再工作了。由于两个模块的名称相似,因此在编译时出现错误:
模块的重新定义
您对此有何解决方案,@nr5