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



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

然后我用UISaveVideoAtPathToSavedPhotosAlbum将数据保存为视频文件,并使用attributesOfItemAtPath获得该保存文件的FileSize属性。它显示正确(2MB)。我只想知道,这些物体是如何编码的。在将URL转换为数据文件时,为什么会出现如此大的大小变化(以字节为单位)

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

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

读取一个2MB的文件将占用2MB多一点的时间,这个开销足够小,您可能不会在内存使用中注意到它。您可以读取比这个大得多的文件,并且在文件大小以上没有明显的内存使用增长。

内存使用量的增加是由于其他原因。意外的多个副本的NSData ?也许你是无意中解压压缩视频?等。你得找出原因。

最新更新