如果在 iOS 9 中加载大量图像,应用程序会冻结

App freezes if a lot of images are loading in iOS 9

如果我加载大量图像,我的应用程序自 iOS 9 起冻结。我们的网络服务器有时会在传送所有图像时出现问题(网关超时),因此应用程序会冻结直到超时。没有错误,之后应用程序就可以了。我正在使用 SDWebImage 和 RestKit。我可以在模拟器中重现冻结。 iOS 我没有这个问题 8. 在我向我们的服务器发送请求之前,我删除了所有缓存的响应:[[NSURLCache sharedURLCache] removeAllCachedResponses];

应用程序在 semaphore_wait_trap 中冻结。

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

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

如果我在冻结期间暂停调试,我会在调试导航器中得到这个输出 window(YPI类 是我自己的):

非常感谢您的帮助。

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

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

我也遇到了同样的问题,一开始以为是我这边的核心数据并发问题,但是禁用缓存后,一切正常