objective-c - 具有多个目标的 Swift 生成的 header

标签 objective-c swift

当存在多个具有通用代码的目标时,我无法生成使用 ObjC 的 Swift 类所需的 swift header 。

我创建了两个目标 My OSX AppMy iOS App。这些目标共享公共(public)代码,其中 ObjC 类调用 Swift 类。

Swift and ObjC in the same project 中所述我可以将 #import "My_iOS_App-Swift.h" 添加到我的 ObjC 类,并从 My iOS App 目标编译它。

但是,这不会从 My OSX App 目标编译,因为包含需要与模块名称相匹配。它正在寻找 #import "My_OSX_App-Swift.h",但通用代码不使用该包含。

在多个目标之间共享的代码中混合/匹配 Swift/ObjC 的正确方法是什么?我可以手动更改每个目标以使用通用的 MyApp-Swift.h,但这感觉不对并且可能会导致其他问题。

最佳答案

在build设置中将产品模块名称设置为在您的模块中相同

例如:$(PROJECT_NAME)

或者如果您有针对不同目标的 watch 扩展,则使用固定名称,例如:Main_App 和 Watchkit

这会导致生成的 ###-Swift.h 文件在所有模块中具有相同的名称。这也消除了添加/检查预处理器微处理器的需要。

发件人:Objective C to Swift header file with multiple targets

关于objective-c - 具有多个目标的 Swift 生成的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36270941/

相关文章:

ios - 如何在 SwiftUI 中基于绑定(bind)枚举更改 View 的样式?

ios - 在 AFNetworking 中设置用户代理

iphone - 如何从自定义模型对象数组中获取特定键的值

iphone - 禁用 UIView 和控件

ios - 向键盘添加自定义行

ios - 将两个图像混合在一起后检索原始图像

ios - 如何通过 Cordova 插件锁定屏幕方向?

iOS - 使用 iBeacons 在 Proximity 上触发事件

ios - objective-C :旋转方法不起作用

ios - 选择器 'touchesBegan:withEvent:' 的覆盖方法具有不兼容的类型 '(NSSet, UIEvent) -> ()'