一些 Cocoapods,例如YLTableView,不会设置'DEFINES_MODULE' => 'YES'为它们的pod_target_xcconfig. 这意味着,例如,import YLTableView除非您:modular_headers => true在 Podfile 中像这样设置,否则在 Swift中不起作用:
pod 'YLTableView', '~> 2.2.0', :modular_headers => true
Run Code Online (Sandbox Code Playgroud)
如果我正在编写 podspec,是否有任何理由不应该像这样在我的配置中包含 DEFINES_MODULE?
ss.pod_target_xcconfig = { "DEFINES_MODULE" => "YES" }
Run Code Online (Sandbox Code Playgroud)
在我看来,这没有任何负面影响,而且它使 Swift 用户可以更轻松地使用我的库。
有一个已知问题(有解决方法):https://github.com/CocoaPods/CocoaPods/issues/7584。对于直接在预编译头文件 (*.pch) 中导入 Objective-C 库头文件的用户来说,这可能会导致问题。您可以通过在 lib 源文件中包含一个空的 swift 文件来解决此问题。CocoaPods 的未来版本很可能会进行彻底的修复。
否则,没有真正的缺点。它在构建时启用更严格的导入搜索路径,这意味着:
@import在 ObjC 或importSwift 中找到它)[...] CocoaPods 允许任何 pod 导入具有未命名空间引用导入的任何其他 pod。
例如,pod B 的代码可能包含#import“Ah”语句,CocoaPods 将创建允许此类导入成功的构建设置。但是,如果您尝试将模块映射添加到这些 pod,则此类导入将不起作用。很多年前,我们尝试为静态库自动生成模块映射,但它破坏了一些 pod,因此我们不得不恢复。
在此版本中,您将能够选择更严格的标头搜索路径(以及 Objective-C pod 的模块映射生成)。作为 pod 作者,您可以将 'DEFINES_MODULE' => 'YES' 添加到您的 pod_target_xcconfig 中。[...]
| 归档时间: |
|
| 查看次数: |
4741 次 |
| 最近记录: |