0

まず、これが AFNetworking の問題なのか CFNetwork の問題なのか正確にはわかりません。

何千もの画像をダウンロードする iOS アプリで AFNetworking を使用しています。これは、NSMutableURLRequest、AFHTTPRequestOperation (AFHTTPResponseSerializer を使用)、NSOperationQueue (NSOperationQueue の maxConcurrentOperationCount が 8 btw に設定されている) を介して実装されます。

私が見ているのは、これらの画像がサーバーからダウンロードされている間、アプリのメモリ使用量が大幅に増加することです。計測器 (XCode5) で割り当てを使用すると、多くのメモリが CFNetwork の HTTPProtocol::bytesAvailable の CFData に使用されているように見えます。

ここに画像の説明を入力

CFNetworkについては何も知りませんが、画像のダウンロード中に一部のCFDataが解放されず、一時的に多くのメモリが蓄積されると推測しています。

明確にするために、このメモリは最終的にどこかで、何らかの形で解放されます。しばらくすると、Instruments のメモリ フットプリントが減少しますが、私が懸念しているのは、画像のダウンロード中に何が起こっているかです。

ここに画像の説明を入力

奇妙なことに、maxConcurrentOperationCount=8 の場合、一度にダウンロードされる画像は 8 つまでだと思われるでしょう...

これは他の人が遭遇した問題ですか? もしそうなら、それを修正する方法は? これが起こらないように AFNetworking を設定できますか?

ありがとう。

4

1 に答える 1