0

THEOS の微調整では、クラスをフックし、そのメソッドの 1 つを正常に呼び出しています。

私の問題は、微調整しているアプリの更新後にメソッド名が変更されたことです。

古いバージョンでは、問題のメソッドは 1 つの引数 (method:arg1) を取り、2 つの引数 (method:arg1:arg2) を取るように更新されました。今のところ、私のコードは次のようになります

%hook className

- (void)method:arg1 {
    //
}

- (void)method:arg1:arg2 {
    //
}

%end

この設定は新しいバージョンでは正常に機能しますが、古いバージョンではアプリがクラッシュします。バンドル バージョン ([[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]) に基づいてこれらのメソッドのいずれかを条件付きで呼び出す方法はありますか?

#if と #endif で遊んだことがありますが、うまくいきませんでした。

あなたの助けに感謝します。

4

2 に答える 2

0

endif がマクロのコンパイル時である場合、必要な実行時ではありません。

私もtheosロゴを学んでいますが、%groupと%ctor{}を条件付きで使うべきだと思います。

こちらを参照してください: Theos / Logos で %group 機能を使用するにはどうすればよいですか?

于 2013-05-09T21:03:51.527 に答える