【问题标题】:I call URLSession.share.datatask and before it can complete the user pops the uiviewcontroller我调用 URLSession.share.datatask 并在它完成之前用户弹出 uiviewcontroller
【发布时间】:2017-03-19 16:34:29
【问题描述】:

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

【问题讨论】:

    标签: ios swift exception deinit urlsession


    【解决方案1】:

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

    [dataTask cancel]
    dataTask = nil // if needed
    

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

    如果你愿意,你可以also detect if it is the last VC 弹出,如果你愿意,可以在viewWillDisappear 方法中相应地执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 2013-08-06
      相关资源
      最近更新 更多