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

时间:2015-10-04 12:47:38

标签: ios core-data restkit ios9 sdwebimage

如果我加载大量图片,我的应用程序会冻结自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类是我自己的):debug navigator window

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

我遇到了同样的问题,最初我认为这是我身边的核心数据并发问题,但是在禁用缓存后,它运行正常。