我注意到当在后台使用 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
任何帮助表示赞赏!