1

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'

ビルドをアーカイブしたときにのみこれが発生する理由や、修正するために何をすべきかわかりません。


編集:他の場所で見た同様の問題への回答に基づいて、アーカイブのビルド構成をリリースからデバッグに変更し、今はアーカイブします。ただし、これは良いことではないようです。これを行うと、アーカイブにデバッグ シンボルが含まれますか?

4

1 に答える 1