美文网首页
swift网络请求未完成时,控制器已经销毁

swift网络请求未完成时,控制器已经销毁

作者: 蔡俊宇 | 来源:发表于2016-05-19 18:51 被阅读508次

有时候我们在下拉加载或者上拉刷新的时候,退出了当前的控制器,所以导致请求完后的block访问了野指针。
这个时候,我暂时想到了两种方案解决:
第一种是ANF里面拿到请求的单例,然后获取operationQueue执行取消操作。

NetworkTools.shareNetworkTools().operationQueue.cancelAllOperations()

第二种是记录一个静态的属性
viewController.isDeinit = false
在控制器销毁的时候将属性改为true

deinit {
    ViewController.isDeinit = true
 }

然后在回调的时候,直接在请求里面拦截不执行block里面的内容
//伪代码

NetworkManageTool.PostWithURL(Url, parameters:
        nil, success: { [unowned self](json) -> Void in
  if ViewController.isDeinit == true {
                return
  }
}

相关文章

网友评论

      本文标题:swift网络请求未完成时,控制器已经销毁

      本文链接:https://www.haomeiwen.com/subject/rxugrttx.html