2009-08-23 1 views
1

写真をウェブサイトにアップロードするためにNSinvocationを設定しようとしています。私はこれをやっている:Iphone:NSInvocationは引数の参照を変更しますか?

  1. がnsinvocationオブジェクト
  2. 機能を必要なときに
  3. nsinvocationを呼び出すいくつかの他の引数と一緒に、引数としてnsinvocationオブジェクトにUIImage *を追加を設定しますnsinvocationを呼び出すと呼び出され、UIImageにアクセスできません - 私はNSInvalidArgumentExceptionを取得します。

少し掘り下げた後、私はNSInvocationオブジェクトに引数としてUIImageを追加して、それを取り戻そうとしているようです...別のメモリアドレスが返されました!これは正常ですか?

// まず私が "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のメモリアドレスは同じではないでしょうか?

答えて

1

[myInvocation setArgument:imgHolder atIndex:5];

imgHolderは* UIImageである場合は、& imgHolder、ないimgHolderを渡す必要があります。

+0

=)ありがとう。 (Shiftを押したときに7ボタンが届きにくいようでしたら、これはあまり頻繁には起こりません...) –

関連する問題