1

我正在尝试设置 NSinvocation 将图片上传到网站。我正在这样做:

  1. 设置 nsinvocation 对象
  2. 将 UIImage* 作为参数添加到 nsinvocation 对象,以及其他一些参数
  3. 在需要时调用 nsinvocation
  4. 当我调用 nsinvocation 时调用的函数无法访问 UIImage - 我得到 NSInvalidArgumentException。

挖了一会儿之后,看起来如果我将 UIImage 作为参数添加到我的 NSInvocation 对象,然后尝试将其取回......我返回了一个不同的内存地址!这是正常的吗?

//首先我有一个有效的 UIImage "imgHolder",它的内存地址是 "A"...

NSInvocation *myInvocation = [NSInvocation 调用WithMethodSignature:...

[myInvocation setArgument:imgHolder atIndex:5];

//现在,奇怪的部分...

UIImage *checkImg;

[myInvocation getArgument:&checkImg atIndex:12];

// checkImg 的内存地址为“B”!

如果我尝试使用 checkImg,我会遇到各种异常,这让我相信它不是有效的 UIImage。

有什么想法吗?checkImg的内存地址不应该和imgHolder的一样吗?

4

1 回答 1

1

[myInvocation setArgument:imgHolder atIndex:5];

如果 imgHolder 是 UIImage*,则应该传递 &imgHolder,而不是 imgHolder。

于 2009-08-23T20:54:21.100 回答