ResearchKit を使用するプロトタイプに取り組んでいます。iP6 またはシミュレーターを使用して XCode からアプリを実行すると、すべてがうまく機能します。アプリをアーカイブしようとすると、エラーが表示されます。
次のエラーが表示されます。
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_ORKQuestionStepCellHolderView", referenced from:
_OBJC_CLASS_$__TtC6myapp11MyCustomView in MyCustomView.o
"_OBJC_METACLASS_$_ORKQuestionStepCellHolderView", referenced from:
_OBJC_METACLASS_$__TtC6myapp11MyCustomView in MyCustomView.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
これらの指示に従って、ResearchKit をプロジェクトに含めました。ソースコードをダウンロードして(「安定」ブランチを使用しています)、プロジェクトを私のものにドラッグし、RKフレームワークを構築してから、組み込みバイナリとして追加してみました。主な問題は、 ORKQuestionStepCellHolderViewから継承するカスタム クラスにあります。このカスタム クラスを削除すると、エラーがなくなり、アプリをアーカイブできます。
ORKQuestionStepCellHolderView は、ORKCustomStepView.h および .m ファイル内で定義されます。
なぜこの問題が発生し、この特定のクラス (ORKQuestionStepCellHolderView) でのみ発生するのかについての手がかりはありますか? どんな助けでも大歓迎です!!
ところで、私は XCode 7.3.1 を使用しており、私のプロジェクトは主に Swift を使用しています。これがこの問題に関連しているかどうかはわかりませんが、おそらく役立つでしょう。
更新 これから ResearchKit コードを更新するだけで、最終的にアプリをアーカイブできました。
@interface ORKQuestionStepCellHolderView : ORKQuestionStepCustomView
@property (nonatomic, strong, nullable) ORKSurveyAnswerCell *cell;
@end
これに:
ORK_CLASS_AVAILABLE
@interface ORKQuestionStepCellHolderView : ORKQuestionStepCustomView
@property (nonatomic, strong, nullable) ORKSurveyAnswerCell *cell;
@end
これがバグなのか、それとも間違った角度から問題に取り組んでいるのかを確認するために、ここに質問を投稿しました。
ORK_CLASS_AVAILABLE が何をするのかを理解しようとして、最終的にこのリンクを読んで、シンボルの可視性について説明しました。
更新と 回答 YuanZhu-appleは、私のアプローチが正しく、ResearchKit のバグであることをここで確認したので、PR を投稿します。