我在Xcode 8.2(构建目标8.0)中的swift 2.3代码中调用了Objective-C方法。它接受NS_ENUM作为参数:
typedef NS_ENUM(NSUInteger, MLCMultipleChoiceSlideSubtype) {
MLCMultipleChoiceSlideSubtypeQA,
MLCMultipleChoiceSlideSubtypeFillInTheBlank,
MLCMultipleChoiceSlideSubtypeUnknown
};
包含此枚举和方法的.h文件位于我的bridging-header.h文件中。这是objc方法的签名:
+ (nullable instancetype)slideWithSubtype:(MLCMultipleChoiceSlideSubtype)subtype testSlide:(nonnull TestSlide *)slide distractorFinder:(nonnull MultipleChoiceDistractorFinder *)distractorFinder;
然后我就像这样从Swift 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'
我不知道为什么只有在归档构建或修复它时该怎么做才会发生。
编辑:根据我在其他地方看到的类似问题的答案,我在我的方案中将存档构建配置从Release更改为Debug,现在归档。然而,这似乎不是一件好事。存档是否包含我的调试符号?
答案 0 :(得分:0)
事实证明我需要调用这样的方法:
if let mcSlide = MultipleChoiceSlide.init(subtype: .QA, testSlide: slide, distractorFinder: distractorFinder) {
return mcSlide
}
虽然我不确定为什么添加.init有帮助。