【问题标题】:App freezes if a lot of images are loading in iOS 9如果在 iOS 9 中加载大量图像,应用程序会冻结
【发布时间】:2016-01-01 05:25:36
【问题描述】:

如果我加载大量图像,我的应用会在 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])

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

非常感谢您的帮助。

【问题讨论】:

    标签: ios core-data restkit ios9 sdwebimage


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-14
        • 1970-01-01
        • 2014-07-29
        • 1970-01-01
        • 1970-01-01
        • 2021-06-20
        相关资源
        最近更新 更多