静的なiOSフレームワークの作成。私はサードパーティのコードを使用したい、私のフレームワークでAFNetworking
を例として使うことができます。 AFNetworking
が人気です。私は今名前空間の衝突を感じることができます。ここでベストプラクティスは何ですか?私の知る限り、3つのオプションがあります:iOSフレームワークの作成:第三者のライブラリとコードの使用
1)ヘッダをエクスポートして、フレームワークにAFNetworking
をビルドします。これにより、クライアントはAFNetworking
のバージョンを自分のライブラリに使用できますが、AFNetworking
もリンクする他のフレームワークは使用できません。彼らはAFNetworkingを更新するために私に頼っています。
2)AFNetworking
ヘッダーに対してコード化します。ただし、第三者にはプロジェクトにAFNetworking
が含まれます。これは、フレームワークの消費者のための余分なステップを追加する、彼らはAFNetworking
ソースを追加する必要があります。将来バージョンの互換性がないかもしれませんが、少なくとも別のフレームワークでAFNetworking
を使用している場合は、同時に使用できます。
3)再ネームスペースAFNetworking
とヘッダーを非公開にします。このようにして、私はAFNetworking
のコピーを更新するのが本当に難しくなることを除けば、名前空間の衝突を避けることができます。最終的なバイナリは少し大きくなりますが、すべての相互運用性の問題は解決されます。これは私のためにもっと多くの仕事です。
他にもオプションがありますか?ベストプラクティスは何ですか?
名前空間が衝突する理由は分かりません(クラス名に 'AF'を付けない限り)。 AFNetworkingの最新の安定版を使用しますが、ユーザにはそれを含めるようにしてください。使用しているAPIが公開されている場合は、変更する可能性は低いです。 –
ココアポッドをチェックしましたか?他のポッドに依存関係を追加することができます。 – mkral
@ H2CO3コンパイルされた 'AFNetworking'オブジェクトが私のライブラリのバイナリに含まれていて、ユーザがコード自体を追加したり、別のフレームワークを使用したりすると、リンカが最終的なアプリケーションバイナリを作成しようとするとobjective- – jackslash