NSURLConnection を使用したダウンロードがバックグラウンドで行われているときに、iPhone 4 でコレクション ビューをスクロールしているときにフレームレートが大幅に (5 FPS まで) 低下することに気付きました。最初は AFNetworking が原因ではないかと疑っていましたが、単純にブロックを使用しただけでも同じことが起こることがわかりました。
- (void)startBlockDownload:(id)sender
{
NSLog(@"starting block download");
dispatch_queue_t defQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
void (^downloadBlock) (void);
downloadBlock = ^{
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:_urlString]];
NSURLResponse *response = nil;
NSError *error = nil;
NSData* result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"block request done");
};
dispatch_async(defQueue, downloadBlock);
}
何を与える?バックグラウンドでのダウンロードは負荷が高すぎて、UI のレンダリングが非常に遅くなりますか? 遅いフラッシュメモリですか?バックグラウンドでのダウンロード中に UI の応答性を維持するためにできることはありますか?
この問題を示すサンプル プロジェクトを作成しました: https://github.com/jfahrenkrug/AFNetworkingPerformanceTest
このトピックについて私が開始した AFNetworking に関するこの問題も参照してください: https://github.com/AFNetworking/AFNetworking/issues/1030#issuecomment-18563005
どんな助けでも大歓迎です!