Xcodeプロジェクトには、両方とも同じ名前のクラスを定義する2つのフレームワークがあります(B.frameworkとC.frameworkの両方にMyClassという名前のクラスがあります)。その結果、同じシンボルを持つ2つのフレームワーク
Duplicate symbol _OBJC_METACLASS_$_MyClass originally in B.framework/B(MyClass.o) now lazily loaded from C.framework/C(MyClass.o)
Duplicate symbol _OBJC_CLASS_$_MyClass originally in B.framework/B(MyClass.o) now lazily loaded from C.framework/C(MyClass.o)
その後、実行時に実装の一つだけがロードされ、彼らは同じを持っているにもかかわらず(全く異なるクラスであるため、「インスタンスに送信され、認識されないセレクター」になり、他のいずれかを使用しようとしています名)。
私が直接私のコードでのMyClassの実装の1つ使用していますが、他のフレームワークは内部でのみそのMyClassのを使用して、私もエクスポート(そのさえ枠組み内のファイルヘッダ言及していない、私はnm
を使用し、その理由はわかりませんシンボルを表示するには)。
どのようにして両方のフレームワークを動作させることができますか?
それは私が恐れていたものです。私はどちらのフレームワークのソースにもアクセスできない、またはあなたが述べた方法でそれを修正したでしょう。ベンダーが私のためにそれを修正することを期待する前に、友人は妥当な解決策のようなものを提案しています(それは一種のハッキリを感じます):自分のフレームワークを作成し、適切なプレフィックスを必要とするこれがうまくいくかどうか、あるいはフレームワークのシンボルはカプセル化フレームワークを通してまだ「エクスポート」されていますか? Gunna test asap –
@poiuy_qwert:それは絶対に*働かない*。 –
Obj-Cは動的ランタイム言語です。リンクされたオブジェクトファイル/フレームワークによってランタイムに追加されたものは、アプリケーション全体に公開されます。 –