1

我不确定如何防止我的应用程序出错。我需要使用 URLSession.shared.dataTask 调用服务器,如果我允许它完成,它工作得很好。但是,如果我在 URLSession.shared.dataTask 完成之前将 uiviewcontroller 从堆栈中弹出,则会发生运行时错误,因为 viewcontroller 不再存在。它发生在json解析和网络调用的不同地方。通常在回调或网络调用失败时显示错误。有谁知道如何在 uiviewcontroller deinits 时停止网络调用,或者在网络调用代码中检测到 uiviewcontroller 已经消失,所以我不调用回调。我正在使用带有 Swift 3 的 Xcode 8 和 iOS 10。谢谢。

4

1 回答 1

2

在你弹出你的 VC之前,调用这些:

[dataTask cancel]
dataTask = nil // if needed

(你可能需要转换 o Swift,因为它们在 Obj-c 中,但你明白了)

如果您愿意,您还可以检测它是否是您弹出的最后一个 VC,viewWillDisappear如果您愿意,可以在方法中相应地执行此操作。

于 2017-03-19T16:39:02.583 回答