メソッドの実装は次の方法で取得できます。
IMP imp = [self methodForSelector:@selector(foo)];
そして、IMP は基本的に関数ポインタであることを知っています。
次に、指定したコードを取得できますか?つまり、NSData または char* などで保存します。
次に、プログラムから保存して、ファイルから動的に再読み込みできます。
ありがとう。
メソッドの実装は次の方法で取得できます。
IMP imp = [self methodForSelector:@selector(foo)];
そして、IMP は基本的に関数ポインタであることを知っています。
次に、指定したコードを取得できますか?つまり、NSData または char* などで保存します。
次に、プログラムから保存して、ファイルから動的に再読み込みできます。
ありがとう。
ここで何をしたいのかをよく考えて、志望動機を教えてください。セレクターが本質的に関数ポインターであることは正しいです。関数を構成する命令をエンコードするために使用されるバイトをコピーすることは可能ですが、そうするメリットはほとんどありません。
関数を不用意に再配置すると、適切に実行できなくなる可能性があります。たとえば、関数内に、コピーしたコードの外部に到達する相対分岐があるとします。ターゲット アドレスは、現在の値 (プログラム カウンター) に基づいて解決/計算されpc
ます。コードを単純にコピーすると、正しく解決されません。