Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios “公共swift类进口”;“私人”;混合语言(ObjC+;Swift)动态框架中的模块_Ios_Objective C_Swift_Frameworks_Swift Framework - Fatal编程技术网

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中定义的私有头,但构建失败,因为应用程序无法看到受保护的头

我也一直在努力解决这个问题,这就是我发现的对我起作用的原因:

  • 除了已经采取的步骤外,请确保在$(SRCROOT)/MyFramework中创建另一个modulemap(例如.MyFramework.private.modulemap),并将以下内容添加到此文件:

    模块MyFramework\u Private{
    导出*
    }

  • 在.xconfig文件中编辑以下选项:
    
    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