2015-10-04 173 views
0

如果我加載了很多圖像,我的應用程序將自iOS 9凍結。我們的網絡服務器有時會發送所有圖像(網關超時)的問題,所以應用程序凍結,直到超時。沒有錯誤,而且之後的應用程序就很好。我正在使用SDWebImage和RestKit。我可以在模擬器中重現凍結。我沒有iOS 8的這個問題。在我發送請求到我們的服務器之前,我刪除了所有緩存的響應:[[NSURLCache sharedURLCache] removeAllCachedResponses];如果在iOS 9中加載了很多圖像,應用程序會凍結。9

該應用在semaphore_wait_trap中死機。

RestKit線程的最後一行是self.cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:requestOperation.request];

SDWebImages線程的最後一行是if (![[NSURLCache sharedURLCache] cachedResponseForRequest:_request])

如果我在凍結期間暫停調試,我得到這個輸出在調試導航窗口(YPI類是我自己):debug navigator window

非常感謝你的幫助。

回答

2

找到原因:[[NSURLCache sharedURLCache] removeAllCachedResponses];在發送請求之前導致UI掛起。除去這些線和整個應用程序禁用NSURLCache後,問題消失:

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]; 
[NSURLCache setSharedURLCache:sharedCache]; 
2

我有同樣的問題,起初我還以爲是我身邊的一個核心數據的併發性問題,但禁用緩存後,它工作正常。