1
我在Xcode 8.2(构建目标8.0)的swift 2.3代码中调用Objective-C方法。它接受一个NS_ENUM作为参数:在Swift中使用Objective-C Enum
typedef NS_ENUM(NSUInteger, MLCMultipleChoiceSlideSubtype) {
MLCMultipleChoiceSlideSubtypeQA,
MLCMultipleChoiceSlideSubtypeFillInTheBlank,
MLCMultipleChoiceSlideSubtypeUnknown
};
包含该枚举和方法h文件是在我的桥接-header.h文件。这是objc方法的签名:
+ (nullable instancetype)slideWithSubtype:(MLCMultipleChoiceSlideSubtype)subtype testSlide:(nonnull TestSlide *)slide distractorFinder:(nonnull MultipleChoiceDistractorFinder *)distractorFinder;
然后我把它从雨燕2.3是这样的:
if let mcSlide = MultipleChoiceSlide(subtype: .QA, testSlide: slide, distractorFinder: distractorFinder) {
return mcSlide
}
当我编译它用于调试和运行它也能正常工作。然而,当我尝试归档并编译版本,我得到这个消息:
... LessonConvertToMultipleChoiceOperation.swift:55:64: Static member 'QA' cannot be used on instance of type 'MLCMultipleChoiceSlideSubtype'
我不知道为什么,当我归档生成或做什么来解决它这只是发生。
编辑:根据答案,我看到其他地方类似的问题,我改变了档案生成配置,从发布在我的计划进行调试,而现在它的档案。然而,这似乎不是一件好事。通过这样做,归档文件是否包含我的调试符号?
这听起来象是你的系统中存在,但没有正确编译源代码。尽管如此,我并不是这方面的专家。 – Sethmr
如果没有看到整个项目,这很难回答。寻找“调试”和“发布”配置之间的差异。也许有些东西需要封装在'#ifdef DEBUG'中?守卫? – Sulthan