質問


いくつかの背景 - 私はDiney's Guideを使用してカスタムフレームワークを構築しました http://db-in.com/blog/2011/07/universal-framework-iphone-ios-2-0/

ARCベースのフレームワークであるARMV6 / ARMV7の両方のために構築され、4.3の除去ターゲットが編集されています。

結果のフレームワークを5.0プロジェクトに入れたとき、それはうまく機能しますが、4.3プロジェクト(ARCまたは非ARC、問題ではない)に置くと、本当に理解できません...

また、Libarclite.Aを手動で追加してみましたが、何も変わりませんでした。

ld:supplicate symbol _objc_retainedobject in /users/freak4pc/project/myframework.framework/myframework and /developer/platforms/iphoneos.platform/developer/usr/lib/arc/arc/libarclite_iphoneos.a(Arclite develowiner.o) /platforms/iphoneos.platform/developer/usr/bin/clangは、exitコード1で失敗しました

これについての助けに感謝します。
ありがとう
シャイ

役に立ちましたか?

解決

私は同じ問題に苦労しています。回避策は、フレームワークの展開目標をiOS5に設定します(ただし、他の問題が発生しないかどうかを確認してください)。

次にあなた しなければならない iOS4をターゲットにする場合は、マスタープロジェクトでARCを使用します。LibarCliteはありません。私の解決策は、ARCを使用するかどうかに応じて、2つのフレームワークを提供することです。

AppleのDevフォーラムへの2つのリンクがあります。もう少し情報があります。https://devforums.apple.com/message/539344#539344

https://devforums.apple.com/message/588316#588316

更新:より良い方法があります。 iOS5の最小ターゲットを使用して静的ライブラリを構築し、手動で/developer/platforms/iphoneos.platform/developer/usr/lib/arc/libarclite_iphoneos.a(および/developer/usr/lib/arc/libarclite_iphoneimulator.a)あなたのプロジェクトはです いいえ ARCを使用すると、iOS4-Supportが必要です。

更新2:実際、リンカーフラグ-FOBJC -ARCを使用してください。これにより、Libarcliteがまだそこにない場合、Libarcliteがライブラリにリンクされます。最良の解決策。

他のヒント

うわー、それはハードライドでしたが、私はついにそれを解決しました!

最終的なアイデアが巻き込まれたのは、 @Steipeteのコメント、それは少し複雑な状況なので、この問題を超えたかもしれない人のためにそれを説明しようとします。

  1. iOS 4.3でアーク対応フレームワークをコンパイルすると、5.0アークで「ブリッジ」4.3アークにlibarclite.soを自動的に取り付けます。このフレームワークが4.3プロジェクトにインポートされたとき、Arcliteは実際に2回リンクされました - フレームワークのために1回(4.3)、およびプロジェクト自体の1回 - 「重複シンボル」エラーを引き起こしたため、フレームワークをコンパイルする必要があります。 5.0、およびプロジェクトは4.3になります。しかしその後 ;
  2. 私のフレームワークは、@MatttのAfnetWorkingを使用してHTTP要求と異なるAPIのJSON解析を実行することです。 AfnetWorkingは、ターゲットがiOS5であるかどうかをコンパイル中に自動的にチェックします。 NSJSONSerialization, それ以外の場合は、輸入されたJSONライブラリに戻ります。 JSONKit.
  3. iOS5用のAfnetworking対応フレームワークをコンパイルすると(問題No.1を回避するため)、自動的に添付されます NSJSONSerialization, 、4.3プロジェクトで例外を引き起こします。つまり、コンパイルの方向を手動で探し、通話を削除する必要があります。 NSJSONSerialization コンパイルする前に、それは自動的に4.3互換ライブラリに戻ります(私の場合は JSONKit)。その編集条件は、afhttpclient.mおよびafjsonrequestoperation.mにあります(例: #if __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_4_3 || __MAC_OS_X_VERSION_MIN_REQUIRED > __MAC_10_6)
  4. これらの条件を削除した後、nsjsonserializationの代わりにJsonkitを使用してiOS5のフレームワークを正常にコンパイルし、iOS4.3プロジェクトでそれを正常に使用することができました。

これが私のように数日間これに苦労するかもしれない他の人を助けることを願っています:)

シャイ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top