gpt4 book ai didi

ios - 混合语言(ObjC+Swift)动态框架中的公共(public)swift类导入 "private"模块

转载 作者:可可西里 更新时间:2023-11-01 00:55:28 25 4
gpt4 key购买 nike

我有一个动态框架 MyFramwork.framework,它有 Swift 代码和 ObjC header ,标记为 protected (在 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 *
}

所有 protected header (SWIFT_INCLUDE_PATHS = module.modulemap 文件所在目录的路径)

和一个包含所有公共(public) header 的 PublicHeaders.h(我在我的伞形 header MyFramwork.h 中导入)

我怎样才能制作一个公共(public) Swift 类/结构,它在 App 中使用 MyFramwork 私有(private)代码?

如果我在 MyFramwork 的 swift 文件中导入 MyFramwork_Private,应用程序在构建 MyFramwork.framework 时将尝试访问 module MyFramwork_Private 中定义的私有(private) header ,并且构建失败,因为 App 看不到 protected header

最佳答案

我也一直在努力解决这个问题,这就是我发现的对我有用的方法:

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

    module MyFramework_Private {
    export *<br/>
    }

  2. 在您的 .xcconfig 文件中编辑以下选项:
    SWIFT_INCLUDE_PATHS = $(SRCROOT)/MyFramework
    MODULEMAP_PRIVATE_FILE = $(SRCROOT)/MyFramework/MyFramework.private.modulemap

在此之后您应该可以开始了,使用您的框架的应用程序现在应该清楚地了解 MyFramework_Private 是什么,并且您的内部 Swift 文件可以访问私有(private) header 。让我知道您的结果如何,如果可以的话,我很乐意提供帮助。

关于ios - 混合语言(ObjC+Swift)动态框架中的公共(public)swift类导入 "private"模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49751219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com