我注意到,當在後臺使用NSURLConnection進行下載時,在iPhone 4上滾動集合視圖時的幀率顯着下降(有時達到5 FPS)。我先是懷疑AFNetworking是罪魁禍首,但事實證明,同樣的事情發生在我簡單地使用塊:爲什麼一個異步的NSURLConnection會讓iOS在iOS上呆滯?
- (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
任何幫助表示讚賞!
你一次做多少個? – borrrden
只需下載一次,它就開始變得呆滯。 –