"正确"将32位设备的ALAssetRepresentation大小(long long)转换为size_t的方法

时间:2015-05-01 17:45:43

标签: ios objective-c c alasset alassetlibrary

我有以下代码从ALAssetRepresentation中提取数据。

ALAssetRepresentation *representation = ...;
size_t size = [representation size]; // 'size' returns a long long
uint8_t *bytes = malloc(size);

在iOS上构建32位设备时,我收到以下警告。

enter image description here

盲目地将long long投射到size_t作品,但我不知道"对"处理这种情况的方法是。很想知道如何最好地处理它。

1 个答案:

答案 0 :(得分:0)

由于您要分配的size_t类型,请将结果转换为size_t

size_t size = (size_t)[representation size];

唯一的风险是representation size可能比size_t中的数字大。但是如果发生这种情况,那么当在iOS设备上运行时,该值太大而无法为其分配内存,因此这比精度损失更大。