gpt4 book ai didi

swift - 如何使 Swift 框架子模块真正私有(private)?

转载 作者:IT王子 更新时间:2023-10-29 05:52:24 31 4
gpt4 key购买 nike

我发现了另一个问题,它提供了有关问题和可能解决方案的更多详细信息。似乎存在一个已知错误,这是 future 改进的主题。

Objective C classes within an iOS Swift-based dynamic framework

我正在使用 Swift 开发一个框架,并在框架内使用一些 Objective-C 代码。到目前为止,我的模块映射如下所示:

framework module MyModule {
umbrella header "MyModule-umbrella.h"

export *

explicit module Private {
header "MyTools.h"
}
}

我担心的是 MyTools.h 中的所有 API 都可以从框架外部看到:例如,如果您使用 Cocoapods 安装框架,那么您可以import MyModule进入您的应用程序(不是 MyModule.Private),您可以访问 MyTools.h,这是不可取的和多余的。有什么方法可以使 MyTools 从框架外部不可见吗?

附言。我使用 Cocoapods 来分发框架,这是我的 podspec(最重要的部分):

s.module_map    = 'Pod/MyModule.modulemap'
s.frameworks = 'CoreData', 'CoreTelephony', 'SystemConfiguration'
s.resources = 'Pod/Classes/MessageStorage/*.xcdatamodeld'
s.public_header_files = 'Pod/Classes/**/*.h'
s.private_header_files = 'Pod/Classes/MyTools/**/*.h'
s.source_files = 'Pod/Classes/**/*.{h,m,swift}'

附言。我的伞头不导入 MyTools.h

PSSS。只是试图从主模块中排除 header :

framework module MyModule {
umbrella header "MyModule-umbrella.h"

export *
exclude header "MyTools.h"

explicit module Private {
header "MyTools.h"
}
}

运气不好。

最佳答案

我发现了另一个问题,它提供了有关问题和可能解决方案的更多详细信息(虽然不起作用)。似乎存在一个已知错误,这是 future 改进的主题。

Objective C classes within an iOS Swift-based dynamic framework

关于swift - 如何使 Swift 框架子模块真正私有(private)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41571649/

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