0

首先,我不确定这是 AFNetworking 问题还是 CFNetwork。

我在下载数千张图像的 iOS 应用程序中使用 AFNetworking。这是通过 NSMutableURLRequest、AFHTTPRequestOperation(带有 AFHTTPResponseSerializer)、NSOperationQueue(NSOperationQueue 上的 maxConcurrentOperationCount 设置为 8 btw)实现的。

我看到的是,当这些图像从服务器下载时,我的应用程序的内存占用显着增加。使用 Instruments 中的分配 (XCode5),看起来很多内存都流向了 CFNetwork 中 HTTPProtocol::bytesAvailable 中的 CFData。

在此处输入图像描述

虽然我对CFNetwork一无所知,但我只是推测在下载图像时,一些CFData没有被释放,这导致大量内存的临时积累。

为了清楚起见,这个内存最终会在某个地方以某种方式释放,因为我看到 Instruments 中的内存占用量在一段时间后会下降,但我担心的是图像下载时发生了什么。

在此处输入图像描述

奇怪的是,在 maxConcurrentOperationCount=8 的情况下,你会认为一次下载的图像不超过 8 个......

这是其他人遇到的问题吗?如果是,如何解决?可以以某种方式配置 AFNetworking,以免发生这种情况吗?

谢谢。

4

1 回答 1

0

AFNetworking 有操作队列,您可以设置最大并发操作数,如下所示:

[[requestOperationManager operationQueue] setMaxConcurrentOperationCount:5];

于 2014-07-14T08:30:55.653 回答