首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将大量数据写入NSData对象-iOS

将大量数据写入NSData对象-iOS
EN

Stack Overflow用户
提问于 2011-11-08 01:06:43
回答 1查看 2.3K关注 0票数 7

我有一个大约2 2GB大小的视频文件。该视频文件的头部被加密(大约528字节加密)。为了解密这个视频文件,我将文件中的所有字节读取到一个NSData对象中。一旦我将这个文件写入NSData对象,我的应用程序就会崩溃(对于iPad,可能是b‘’coz max-256MB内存)。

那么我该如何将这个NSData对象临时存储到iPad/ iPhone的虚拟内存中呢?

有没有其他方法可以让我达到同样的目的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-08 01:17:15

使用NSInputStream逐段读取文件,这样就不会一次将所有文件加载到内存中。具体地说,您需要使用hasBytesAvailableread:maxLength:

类似于:

代码语言:javascript
复制
NSInputStream *myStream = [NSInputStream inputStreamWithFilAtPath:pathToAbsurdlyLargeFile];
[myStream open];
Byte buffer[BUFFER_SIZE];
while ([myStream hasBytesAvailable])
{
   int bytesRead = [myStream read:buffer maxLength:BUFFER_SIZE];
   NSData *myData = [NSData dataWithBytes:buffer length:bytesRead];
   // do other stuff...
}
[myStream close];

请注意,您可能不需要创建NSData对象。你刚提到你在用它,所以我就把它扔进去了。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8039908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档