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

"Correct" way to cast ALAssetRepresentation size (long long) to size_t for 32-bit devices

我有以下从 ALAssetRepresentation.

中提取数据的代码
ALAssetRepresentation *representation = ...;
size_t size = [representation size]; // 'size' returns a long long
uint8_t *bytes = malloc(size);

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

盲目地将 long long 转换为 size_t 可行,但我不知道 "right" 处理这种情况的方法是什么。很想知道如何最好地处理它。

由于您要分配给 size_t 类型,因此将结果转换为 size_t

size_t size = (size_t)[representation size];

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