如果在iOS 9中加载了很多图像,应用程序会冻结。9

问题描述:

如果我加载了很多图像,我的应用程序将自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

非常感谢你的帮助。

找到原因:[[NSURLCache sharedURLCache] removeAllCachedResponses];在发送请求之前导致UI挂起。除去这些线和整个应用程序禁用NSURLCache后,问题消失:

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

我有同样的问题,起初我还以为是我身边的一个核心数据的并发性问题,但禁用缓存后,它工作正常。