我有以下从 ALAssetRepresentation
中提取数据的代码。
ALAssetRepresentation *representation = ...;
size_t size = [representation size]; // 'size' returns a long long
uint8_t *bytes = malloc(size);
在 iOS 上为 32 位设备构建时,我收到以下警告。
盲目地将 long long
转换为 size_t
可行,但我不知道处理这种情况的“正确”方法是什么。很想知道如何最好地处理它。
最佳答案
因为您要分配给 size_t
类型,所以将结果转换为 size_t
。
size_t size = (size_t)[representation size];
这样做的唯一风险是 representation size
可能是一个大于 size_t
的数字。但如果发生这种情况,该值太大而无法在 iOS 设备上运行时为其分配内存,因此这是一个比精度损失更大的问题。
关于ios - "Correct"将 ALAssetRepresentation 大小(long long)转换为 32 位设备的 size_t 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29992122/