用于在iOS中下载文件的内存管理

时间:2013-10-29 22:29:38

标签: ios objective-c memory-management afnetworking

所以我有一个应用程序,它将下载大量文件,范围从png到pdfs。

如果数据太多,似乎会出现问题,它会崩溃。在Xcode中,它会出现内存错误。如果我在模拟器中运行它会工作正常,但在iPhone上会崩溃。

我们谈论的是40 MB的数据,但是当我查看内存监视器时,它似乎正在飙升,就像使用了大约300-500 MB的内存。我相信当它在下载35 MB PDF的过程中崩溃时。我正在使用AFNetworking下载数据。任何帮助将不胜感激。

我真的没有任何代码可以显示,因为它在进行AFNetworking的异步下载时基本上会崩溃。

2 个答案:

答案 0 :(得分:1)

我从未理解AFNetworking的受欢迎程度。它有助于不正确地进行下载,从而导致这个问题。您最好只使用NSURLConnection sendAsynchronousRequest:queue:completionHandler:

答案 1 :(得分:0)

我知道问题相对较旧,但我在内存方面存在同样问题,并通过AFNetworking下载了大量文件。

AFNetworking似乎缓存依赖于NSURLRequest的缓存策略。

我先做过:

    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:URLString]];
如果我开始下载许多文件内存问题,那么每次都有。

现在我明确地在NSURLRequest上设置了Cache-Policy,我不再有内存问题了:)

新电话:

    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:URLString] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:30];

这使我指出了正确的方向:https://github.com/AFNetworking/AFNetworking/issues/109

也许这可以帮助您解决问题?