3

和这个争了一阵子。基本上,我将图像转换为 NSData,以便将其发送到服务器。我以前使用过的代码,但由于某种原因,我得到了一个 ARC 错误。错误出现在我声明 imageData 变量的那一行。

注意: myImage 被交给该方法。

- (void)uploadImage:(NSImage *)myImage {

     NSData *imageData = UIImageJPEGRepresentation(myImage, 1.0);

     // Do something...

}

我收到一个错误和两个警告

Error: Implicit conversion of 'int' to 'NSData *' is disallowed with ARC
Warning: Implicit declaration of function 'UIImageJPEGRepresentation' is invalid in C99
Warning: Incompatible integer to pointer conversion intializing 'NSData * __strong' with an expression of type 'int'

有任何想法吗?

4

1 回答 1

7

您可能需要包含相关标题:

#import <UIKit/UIKit.h>

在 C99 之前,如果您调用一个编译器没有看到其声明的函数,它将编译该调用,就好像该函数被声明为int UIImageJPEGRepresentation(). C99 不允许这样做,但编译器似乎仍在应用旧的解释(或者编译器处于 C99 之前的模式;我不确定默认值是什么),因此出现了 ARC 错误。

于 2012-07-29T23:46:36.050 回答