写真をウェブサイトにアップロードするために NSinvocation を設定しようとしています。私はこれをやっています:
- nsinvocation オブジェクトを設定する
- UIImage* を nsinvocation オブジェクトに引数として追加し、その他の引数もいくつか追加します。
- 必要に応じて nsinvocation を呼び出す
- nsinvocation を呼び出したときに呼び出される関数は、UIImage にアクセスできません。NSInvalidArgumentException が発生します。
しばらく掘り下げた後、UIImage を引数として NSInvocation オブジェクトに追加し、元に戻そうとすると、別のメモリ アドレスが返されます。これは正常ですか?
//最初に、メモリ アドレス "A" を持つ有効な UIImage "imgHolder" があります...
NSInvocation *myInvocation = [NSInvocation invocationWithMethodSignature:...
[myInvocation setArgument:imgHolder atIndex:5];
//さて、奇妙な部分は...
UIImage *checkImg;
[myInvocation getArgument:&checkImg atIndex:12];
// checkImg のメモリ アドレスは "B" です!
checkImg を使用しようとすると、有効な UIImage ではないと思わせるさまざまな例外が発生します。
何が起こっているのですか?checkImg のメモリ アドレスは imgHolder のメモリ アドレスと同じであるべきではありませんか?