1

私はiosプログラミングの分野に非常に慣れていないため、リンカーを使用することは私にとってまったく新しい世界です。私は私の質問について正確になるように最善を尽くします。

コンテキスト: xcode を使用した ios プロジェクトでの静的ライブラリ リンク。

問題:

問題のメンバー: 3 つの静的ライブラリ。

libTestLibA.a

libTestLibB.a

libTestLibB_mine.a -- libTestLibB.a と同じ機能 -- すべて同じクラス/メソッド。

問題の説明

libTestLibA.a を使用してアプリを作成しています。

libTestLibA には、libTestLibB のいくつかのクラスに依存するいくつかのクラスがあります。したがって、libTestLibA.a には libTestLibB.a がコンパイルされています。

これで、libTestLibB_mine という名前の独自のライブラリができました。libTestLibB とまったく同じ機能を備えています。同じ機能の同じメソッド/クラス。libTestLibA が libTestLibB の代わりに libTestLibB_mine を使用するようにします。libTestLibA、libTestLibB、および libTestLibB_mine の各問題メンバーの静的ライブラリ (.a) をコンパイルしました。

質問:

アプリケーションをコンパイルするとき、静的にコンパイルされたライブラリ (libTestLibA.a) に、既に含まれているもの (libTestLibB.a) ではなく、別のライブラリ (libTestLibB_mine.a) を使用させることはできますか? はいの場合、どのように?そうでない場合、回避策はありますか?

どうもありがとう。

4

1 に答える 1

1

A が既に B に対して静的に準拠している場合、B を B_mine に置き換えることはできないと思います。しかし、回避策として、ここで探しているのは「メソッド スウィズリング」だと思います。実行時に、クラスのメソッドを別のメソッドに置き換えます (メッセージをインターセプトし、別の場所に転送します)。

次のリンクは役に立つはずです。

于 2013-02-18T21:47:48.500 に答える