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'
ビルドをアーカイブしたときにのみこれが発生する理由や、修正するために何をすべきかわかりません。
編集:他の場所で見た同様の問題への回答に基づいて、アーカイブのビルド構成をリリースからデバッグに変更し、今はアーカイブします。ただし、これは良いことではないようです。これを行うと、アーカイブにデバッグ シンボルが含まれますか?