4

通常の App ターゲットと対応する UnitTest ターゲット内で使用するカスタム フレームワークがあります。複数の選択肢があるため、正しい実装を選択できないようにランタイムを混乱させることが判明しました。

objc[35580]: Class AClass is implemented in both ../MyApp.app/MyApp and ../MyApp.app/MyAppTests. One of the two will be used. Which one is undefined.

もちろん、オブジェクトのクラス階層をチェックしたり、他のクラス関連のチェックを行おうとすると、奇妙な動作につながります。

したがって、次の2つの質問に要約されます。

  1. UIKit コンポーネントなどの同様のログは見られませんが、このフレームワークは両方のターゲットにもリンクされています。フレームワークを間違ってコンパイルしましたか?
  2. 私が見逃したのは些細な設定の問題ですか?

PS: 1または2のような同様の投稿を既に確認しましたが、すべてが説明どおりに構成されていますが、問題は残っています。

4

3 に答える 3

2

バンドルはフレームワークのヘッダー ファイルを「読み取る」だけで、ソースをビルドしてそのタスクをアプリに任せるべきではないと思います (フレームワーク.mファイルを UnitTest ターゲットから削除します)。

現在、App と UnitTest の両方がフレームワークを構築しているため、クラスが重複しています。

于 2014-04-04T00:37:42.750 に答える
2

依存関係フレームワークを Tests ターゲットに追加しました。これは間違った考え方です。プライマリ アプリケーションも SAME フレームワークをエクスポートするため、フレームワークで見つかったクラスのシンボルが重複しているという警告が表示されます。

フレームワークをテスト ターゲットから削除することで、警告を解決できます。テスト ターゲットで同じフレームワークにリンクしないことで、機能が失われることはないことに注意してください。私を信じてください、あなたのコードはまだそこにあります。

于 2014-04-07T14:54:33.820 に答える