如果在 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];
我也遇到了同样的问题,一开始以为是我这边的核心数据并发问题,但是禁用缓存后,一切正常
如果我加载大量图像,我的应用程序自 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];
我也遇到了同样的问题,一开始以为是我这边的核心数据并发问题,但是禁用缓存后,一切正常