Objective c UIImageJPEG表示上的圆弧错误

Objective c UIImageJPEG表示上的圆弧错误,objective-c,nsdata,Objective C,Nsdata,我和这件事斗争了一段时间。基本上,我将图像转换为NSData,以便将其发送到服务器。我以前使用过的代码,但由于某种原因,我在这上面得到了一个ARC错误。错误出现在我声明imageData变量的行上 注:myImage交给该方法 - (void)uploadImage:(NSImage *)myImage { NSData *imageData = UIImageJPEGRepresentation(myImage, 1.0); // Do something... }

我和这件事斗争了一段时间。基本上,我将图像转换为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'

有什么想法吗?

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

#import <UIKit/UIKit.h>
#导入

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

这并不是说它有很大的区别,而是通常使用
\import
而不是
\include
。但是的,UIKit可能是缺少的。它是一个桌面应用程序,而不是iPhone。这有关系吗?@JeffreyHunter:可能没有,但我不能肯定。如果该函数在Mac OS X SDK的不同头中声明,您可能需要导入其他内容。@JeffreyHunter:哦,是的,这很重要。UIKit仅适用于iOS,因此基本上任何以“UI”开头的东西都无法在OS X上运行。与UIImage相比,您需要在NSImage上做更多的工作,但看起来它满足了您的需要。再想一想,它的可读性不太好,也无法让您完全访问NSData实例。请看这里:。