0
私は目的関数の関数をswizzleしたい。問題は、 - 私は実行時にのみスウィズルする必要があることを知っています。コード内のメソッドが異なると、戻り値の型や入力パラメータなどが異なります。関数のスウィズリングと実行時に知られている関数
関数とクラスの名前が与えられている場合は、ブロックを作成できます(汎用コード) imp_implementationWithBlockを使用してIMPを作成し、この新しく作成されたIMPを使用して元のメソッドをスウィズルします。
私は、例外をスローしている関数fooを持っているとします。私はこの関数の本体をtry-catchブロックで囲みたい。 したがって、この関数fooからブロックを作成する必要があり、ブロックはまったく同じシグネチャでなければなりません。このブロックには、元のメソッドを呼び出すtry-catchがあります。その後、元のコードを新しいブロックに変更します。 したがって、fooを呼び出すと、そのブロックに実装されているtry-catchが呼び出されます。 実行時にブロックを作成できません。コンパイル時に引数と戻り値の型がわからないからです。 – prabodhprakash
アスペクトは、前、後、代わりにのみ提供されます。私はtry-catchでそれを囲む必要があります。アスペクトを使用する方法はありますか? – prabodhprakash
また、このブロックの例では、関数に引数を渡す方法はありますか?私たちはusingBlockでそれを供給する必要があります。 – prabodhprakash