2016-07-31 65 views
-1

我已经创建了一个自定义表格单元格,我正在其中下载后台线程在单元类中的图像,现在假设我移动到前一个视图控制器。后台线程仍然会执行并会使应用程序崩溃。我可以测试这种情况,因为图像加载速度很快,没有机会移动到以前的视图控制器。UITableViewCell内的后台线程

会有什么后果?

+0

显示您正在使用的代码。 – Wain

+0

你可以使用设置>开发者>网络链接调节器>非常糟糕的网络在慢速网络上测试。并且在Mac上也有一个名为“Network Link Conditioner”的工具 – hariszaman

+0

正如Matt在他的回答中所说的那样,您当然可以编写代码来处理这种情况而不会崩溃。自己测试(使用@ hariszaman的建议,如果需要的话)以便崩溃并报告回来。如果它崩溃,请编辑您的问题以向我们显示您的代码。 –

回答

0

如果您没有正确地做到这一点,肯定会出现问题。你可能不会崩溃,因为NSURLSession通过保留它的委托来阻止你。但出于同样的原因,您留下的视图控制器将会泄漏;它不会失效,下载和其他事情将继续发生。

如果你正确的做法,当视图控制器不存在时,所有下载应该被你取消。如果您不需要占用带宽和CPU时间的下载,则有责任拨打invalidateAndCancel来实现这一目标。请注意,您通常不能在视图控制器的deinit中执行此操作,这完全是因为保留周期。但是一旦你完成了它,你的视图控制器就能够顺利地存在。

+0

感谢fir回复。我会发布代码。但那是我的问题,我需要做些什么来取消下载,否则它会自动取消,当我离开控制器。 – knowledgeseeker

+0

而我的答案是否定的。对不起,如果不明确。这就是为什么你给了'invalidateAndCancel'。 – matt

+0

扩大我的答案。 – matt