我有一个动态框架MyFramwork.framework
,其Swift代码和ObjC标头标记为受保护的(在MyFramwork.framework内部使用)和Public (用于外部)通过App)在框架的项目中。 MyFramwork.framework也是App
按照此处提到的步骤http://nsomar.com/project-and-private-headers-in-a-swift-and-objective-c-framework/,我创建了一个
module MyFramwork_Private {
header "../...h"
...
export *
}
包含所有受保护的标头(SWIFT_INCLUDE_PATHS
= module.modulemap文件所在目录的路径)
和PublicHeaders.h
(我在我的总括标题MyFramwork.h
中导入)包含所有公共标题
如何创建一个使用App中提供的MyFramwork私有代码的Public Swift类/结构?
如果i import MyFramwork_Private
在来自MyFramwork的swift文件中,应用程序在构建MyFramwork.framework时会尝试访问module MyFramwork_Private
中定义的私有标头,并且构建失败,因为App无法看到受保护的标题
答案 0 :(得分:3)
我也一直在努力解决这个问题,这就是我发现的对我有用的技巧:
除了您已经采取的步骤之外,请确保在$(SRCROOT)/ Myframework中创建另一个模块映射(例如MyFramework.private.modulemap)并将以下内容添加到此文件中:
module MyFramework_Private {
export *
}
SWIFT_INCLUDE_PATHS = $(SRCROOT)/MyFramework
MODULEMAP_PRIVATE_FILE = $(SRCROOT)/MyFramework/MyFramework.private.modulemap
在此之后你应该很高兴,使用你的框架的应用程序现在应该清楚地了解MyFramework_Private是什么,并且你的内部Swift文件有办法访问私有头文件。让我知道它是如何为你效劳的,如果可以的话,我很乐意提供帮助。