首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS效率文件保存效率

iOS效率文件保存效率
EN

Stack Overflow用户
提问于 2012-06-08 06:36:51
回答 3查看 178关注 0票数 2

我正在开发我的iOS应用程序,我的目标是一点一点地保存我从互联网上收到的文件。我目前的设置是,我有一个NSMutableData对象,并在收到文件时向其中添加一些数据。在收到最后一个“数据包”之后,我将NSData写到一个文件中,这个过程就完成了。我有点担心这不是一种理想的方式,因为移动设备中RAM的限制,而且接收大文件会有问题。

我的下一个想法是实现一个NSFileHandle,这样当文件到达时,它将被保存到磁盘上,而不是虚拟内存中。

就速度和效率而言,您认为哪种方法在iOS设备上可以很好地工作。我目前正在使用第一种方法,即NSMutableData方法。是否值得将我的应用程序更改为使用NSFileHandle

预先谢谢,Guvvy

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-08 06:40:22

如果您正在下载的数据是无界的(即没有最大文件大小),那么值得在您的下载和保存方案中添加一些代码,以便在某个临界点(例如2K、10K、1兆)将数据从"NSMutableData“对象刷新到文件中。然后当存储器中的数据对象再次填满时附加到该文件上。

由于iDevice没有物理硬盘驱动器(嗯,因为我的意思是一个旋转的盘片,额外的能量被消耗来启动旋转和读写磁头),所以直接将这些字节直接写入文件句柄也是值得的。我不认为它会在电力消耗方面花费任何额外的费用。网络通信的功耗更大(蜂窝通信是耗电最多的,WiFi连接的耗电要少一些)。

票数 1
EN

Stack Overflow用户

发布于 2012-06-08 06:41:16

取决于您正在下载的文件的大小。如果您打算直接使用该文件,那么第一个选项将是最好的,因为它会先保存到RAM,然后再保存到磁盘,然后再加载到RAM中。但是,如果它是一个非常大的文件,那么将它保存到磁盘可能是值得的,即使它将被使用,以便iPhone可以在后台处理它。这主要取决于你,只需运行几个测试,看看使用应用程序时的感觉。

票数 0
EN

Stack Overflow用户

发布于 2012-06-08 07:05:40

您可以尝试使用AFNetworking和它们的Streaming Request

代码语言:javascript
复制
NSURL *url = aUrl;
NSString *path = aPath;
NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:YES];
[operation start];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10940813

复制
相关文章

相似问题

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