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

标签 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 可行,但我不知道处理这种情况的“正确”方法是什么。很想知道如何最好地处理它。

最佳答案

因为您要分配给 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/

相关文章:

c - int x; 是什么意思? arr[100] 到底是什么意思?

javascript - 不需要的 MobileSafari 'Open this page in "App Store”?对话

iphone - iOS 中涉及屏幕抓取的 Objective-C 和 Cocoa Touch 问题

c - 动态分配并返回局部变量

objective-c - 在继续方法之前等待一些可变时间完成

ios - 灰色半透明指令是否使用 UIActivityIndi​​cator?

c - 将文件的每一行分配给数组的每个元素

ios - 最大化 UITabBarItem 图像的大小

ios - MKReverseGeocoder 更新文本字段

objective-c - 流式传输数据以响应 CFHTTPMessageRef 可能吗?