对象如何存储在NSData中?数据大小(以字节为单位)是否与存储为NSData之前相同?

时间:2016-11-09 20:25:11

标签: ios objective-c file encoding nsdata

为了扩展我的问题,我有一个NSString,其中包含一个重达2MB的视频文件的URL。我使用dataWithContentsOfURLNSData的形式存储它。我添加了一个断点并检查了数据的大小。这是非常高的(超过 12MB ),只需要取字节并对其进行数学运算( data / 1024/105 )。

然后我将数据保存为UISaveVideoAtPathToSavedPhotosAlbum的视频文件,并使用attributesOfItemAtPath获取该已保存文件的FileSize属性。它正确显示(2MB)。我想知道的是,对象是如何编码的。为什么在将URL转换为数据文件时,这种大小(以字节为单位)发生了巨大变化。

1 个答案:

答案 0 :(得分:1)

  

我想知道的是,对象是如何编码的。为什么在将URL转换为数据文件时,这种大小(以字节为单位)发生了巨大变化。

NSData不以任何方式“编码”,存储在一个中的字节是原始字节。结构中有一些开销,但这很小。

读取2MB文件需要2MB多一点,开销很小,你可能不会在内存使用中注意到它。您可以读取比此更大的文件,并且看不到大于文件大小的显着内存使用量增长。

您的内存使用量增加是由于其他因素造成的。 NSData的意外多份副本?也许你是无意中解压缩压缩视频?等等。你必须寻找原因。