当存在多个具有通用代码的目标时,我无法生成使用 ObjC 的 Swift 类所需的 swift header 。
我创建了两个目标 My OSX App
和 My 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 - 具有多个目标的 Swift 生成的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36270941/