Objective-Cの性質上、簡単に名前の衝突につながる可能性があるため、コードに接頭辞を付けることをお勧めします。 2つの外部ライブラリFooLibrary
とBarLibrary
結果の名前の衝突を使用しているあなたのMyAwesomeApp
iOSアプリケーションならば、内部でもFooLibrary
がBarLibrary
を使用するために起こるのでObjective-C - 同じライブラリの異なるバージョンで名前の衝突が発生する
どのようにして、この問題を解決するのですか?両方がBarLibrary
あるが、彼らは実際に2つの異なるバージョンなので、FooLibrary
があなたのに対しBarLibrary(v1)
実装に依存するので、最初のもので
はBarLibrary
への参照のいずれかを削除することをお勧めかもしれませんが、あなたはそれを行うことはできませんMyAwesomeApp
はBarLibrary(v2)
の実装に依存します。
この時点で、同じライブラリの2つの異なるバージョンが実際には2つの異なるものであることを認識しており、最初は同じプロジェクトに共存するべきではありません。
他人のコードをリファクタリングする(名前を変更する)以外に、このパズルを解決する他の方法はありますか?
あなたは 'BarLibrary'の' v1'の使用に切り替えることはできますか? – dasblinkenlight
私は唯一の良い解決策は、FooLibraryの作成者がBarLibraryのv2に更新されるようにすることだと思います。これはAppleがiOS上の共有ライブラリをサポートしていないために生き残らなければならない制限の1つにすぎません。 – mpontillo
@dasblinkenlight nope。 – Ali