值转换问题:隐式转换失去整数精度:' size_t' (又名' unsigned long')to' int'

时间:2014-03-20 02:25:59

标签: iphone objective-c gpuimage ios7.1

我刚刚将Xcode的版本更新为5.1,并发生了此错误。我正在使用GPUImage库。这是一个截图。先谢谢你们!error screenshot

1 个答案:

答案 0 :(得分:9)

size_t(大小类型)是对象大小(C对象,而不是Objective-C对象)和类型的整数类型。 size_t个对象的大小(它占用的位数)取决于所使用的体系结构的指针大小。 int个对象的大小(它占用的位数)与此无关,并且通常更小。因此,将类型size_t的值分配给类型int的变量可能会失败,如果该值大到适合size_t对象的值,而不是一个int对象。

您可以执行以下操作之一:

1同时制作bufferHeight类型的变量bufferWidthsize_t

2使变量bufferHeightbufferWidth的积分类型至少与size_t一样大,i。即longNSInteger。 (这取决于您使用的架构。)

3错误消息警告您,如果更大类型的值存储无法用较小的类型表示,则较大类型的隐式转换将失败。如果您确定值(函数的结果)始终适合int,请使转换显式。

int bufferHeight = (int)CVPixelBufferGetHeight(…);

BTW:如果屏幕截图的内容是文字,请发布截图。请复制代码和错误消息。你可以复制&粘贴错误消息。