如果在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
类是我自己):
非常感谢你的帮助。
答
找到原因:[[NSURLCache sharedURLCache] removeAllCachedResponses];
在发送请求之前导致UI挂起。除去这些线和整个应用程序禁用NSURLCache
后,问题消失:
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
答
我有同样的问题,起初我还以为是我身边的一个核心数据的并发性问题,但禁用缓存后,它工作正常。