Objective c Swift生成的具有多个目标的标题
当存在多个具有公共代码的目标时,我无法生成使用ObjC中的swift类所需的swift头 我创建了两个目标Objective c Swift生成的具有多个目标的标题,objective-c,swift,Objective C,Swift,当存在多个具有公共代码的目标时,我无法生成使用ObjC中的swift类所需的swift头 我创建了两个目标我的OSX应用程序和我的iOS应用程序。当ObjC类调用Swift类时,这些目标共享公共代码 如中所述,我可以添加#将“My_iOS_App-Swift.h”导入我的ObjC类,并从我的iOS App目标编译它 但是,由于include需要与模块名匹配,因此它不能从myosx应用程序目标编译。它正在寻找#导入“My_OSX_App-Swift.h”,但通用代码不使用该include 在多个目
我的OSX应用程序
和我的iOS应用程序
。当ObjC类调用Swift类时,这些目标共享公共代码
如中所述,我可以添加#将“My_iOS_App-Swift.h”
导入我的ObjC类,并从我的iOS App
目标编译它
但是,由于include需要与模块名匹配,因此它不能从myosx应用程序
目标编译。它正在寻找#导入“My_OSX_App-Swift.h”
,但通用代码不使用该include
在多个目标之间共享的代码中,混合/匹配Swift/ObjC的正确方法是什么?我可以手动更改每个目标以使用通用的MyApp Swift.h
,但这样做感觉不正确,可能会导致其他问题。在构建设置中设置产品模块名称,使其在所有模块中都相同
例如:$(项目名称)
或者,如果您有针对不同目标(如:主应用程序和Watchkit)的手表扩展,请使用固定名称
这会导致生成的###-Swift.h文件在所有模块中具有相同的名称。这也消除了添加/检查预处理器微型计算机的需要
From:将生成设置中的产品模块名称设置设置为跨模块相同
例如:$(项目名称)
或者,如果您有针对不同目标(如:主应用程序和Watchkit)的手表扩展,请使用固定名称
这会导致生成的###-Swift.h文件在所有模块中具有相同的名称。这也消除了添加/检查预处理器微型计算机的需要
From:对于非平台特定的代码,使用pod或模块。它不应该通过
My\u iOS\u App-Swift.h
或MyApp-Swift.h
。它应该由MyLibrary Swift.h提供,是的,这是有道理的,但是我继承了这个项目,它不是这样建立的。我是否可以手动更改生成的-Swift.h的名称,以便每个目标使用相同的名称而不会造成问题?目前,重组项目以使用库可能会有太多的变化。(我愿意接受你的答案,但不能从评论中得出)使用pod或模块来编写非平台特定的代码。它不应该通过My\u iOS\u App-Swift.h
或MyApp-Swift.h
。它应该由MyLibrary Swift.h提供,是的,这是有道理的,但是我继承了这个项目,它不是这样建立的。我是否可以手动更改生成的-Swift.h的名称,以便每个目标使用相同的名称而不会造成问题?目前,重组项目以使用库可能会有太多的变化。(我愿意接受你的回答,但无法从评论中获得答案)