如果我加载大量图片,我的应用程序会冻结自iOS 9以来。我们的Web服务器有时会出现传送所有图像的问题(网关超时),因此应用程序会冻结直到超时。没有错误,应用程序就好了。我使用SDWebImage和RestKit。我可以在模拟器中重现冻结。我没有在iOS 8中遇到此问题。在向服务器发送请求之前,我删除了所有缓存的响应:[[NSURLCache sharedURLCache] removeAllCachedResponses];
该应用程序在semaphore_wait_trap
冻结。
RestKit线程的最后一行是self.cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:requestOperation.request];
。
SDWebImages线程的最后一行是if (![[NSURLCache sharedURLCache] cachedResponseForRequest:_request])
。
如果我在冻结期间暂停调试,我会在调试导航器窗口中看到此输出(YPI
类是我自己的):
非常感谢你的帮助。
答案 0 :(得分:2)
找到原因:[[NSURLCache sharedURLCache] removeAllCachedResponses];
在发送请求之前导致UI挂起。删除这些行并禁用整个应用的NSURLCache
后,问题就消失了:
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
答案 1 :(得分:2)
我遇到了同样的问题,最初我认为这是我身边的核心数据并发问题,但是在禁用缓存后,它运行正常。