2013-02-27 9 views
13

静的なiOSフレームワークの作成。私はサードパーティのコードを使用したい、私のフレームワークでAFNetworkingを例として使うことができます。 AFNetworkingが人気です。私は今名前空間の衝突を感じることができます。ここでベストプラクティスは何ですか?私の知る限り、3つのオプションがあります:iOSフレームワークの作成:第三者のライブラリとコードの使用

1)ヘッダをエクスポートして、フレームワークにAFNetworkingをビルドします。これにより、クライアントはAFNetworkingのバージョンを自分のライブラリに使用できますが、AFNetworkingもリンクする他のフレームワークは使用できません。彼らはAFNetworkingを更新するために私に頼っています。

2)AFNetworkingヘッダーに対してコード化します。ただし、第三者にはプロジェクトにAFNetworkingが含まれます。これは、フレームワークの消費者のための余分なステップを追加する、彼らはAFNetworkingソースを追加する必要があります。将来バージョンの互換性がないかもしれませんが、少なくとも別のフレームワークでAFNetworkingを使用している場合は、同時に使用できます。

3)再ネームスペースAFNetworkingとヘッダーを非公開にします。このようにして、私はAFNetworkingのコピーを更新するのが本当に難しくなることを除けば、名前空間の衝突を避けることができます。最終的なバイナリは少し大きくなりますが、すべての相互運用性の問題は解決されます。これは私のためにもっと多くの仕事です。

他にもオプションがありますか?ベストプラクティスは何ですか?

+0

名前空間が衝突する理由は分かりません(クラス名に 'AF'を付けない限り)。 AFNetworkingの最新の安定版を使用しますが、ユーザにはそれを含めるようにしてください。使用しているAPIが公開されている場合は、変更する可能性は低いです。 –

+1

ココアポッドをチェックしましたか?他のポッドに依存関係を追加することができます。 – mkral

+0

@ H2CO3コンパイルされた 'AFNetworking'オブジェクトが私のライブラリのバイナリに含まれていて、ユーザがコード自体を追加したり、別のフレームワークを使用したりすると、リンカが最終的なアプリケーションバイナリを作成しようとするとobjective- – jackslash

答えて

6

より良いオプションは、http://cocoapods.orgです。こうすることで、libsの依存関係を宣言することができ、プロジェクト全体を1回ダウンロードすることができます。

ヘッダーの名前を変更しないでください。時間がかかり、難しいです。

PD:このサンプル:

http://chariotsolutions.com/blog/post/using-cocoapods-to-manage-private-libraries/

+3

これは、Cocoapodsを使用するためにホストアプリケーションを必要とするという欠点があります。 – ZaBlanc

関連する問題