当请求对象不存在时,网络操作的完成处理程序代码会发生什么

时间:2015-02-24 17:20:44

标签: ios objective-c

  • VC1使用NSURLSession
  • 进行网络通话
  • NSURLTaskdispatch_get_global_queue
  • 中执行
  • NSURLTask completionHandler ,可在VC1(委托)
  • 中执行代码
  • 提交任务后,堆栈 弹出 {/ 1}。

上次陈述的预期行为是什么?我的意思是网络运营?如果有的话,completionHandler将如何执行?

想象一下当弹出vc1时从服务器接收数据的情况

需要采取哪些措施来防范应用程序崩溃?

1 个答案:

答案 0 :(得分:0)

来自文档

  

加载请求完成时调用的完成处理程序。如果发送到通过调用sessionWithConfiguration创建的会话:delegate:delegateQueue:使用delegateQueue参数的非nil值,则在该委托队列上执行此处理程序。

所以,这取决于你是否设置了委托。如果您尚未设置委托,则该对象将超出范围,并且不会调用完成块,因为没有任何内容持有对NSURLTask的引用。如果您设置了委托,则会在委托队列上指定的委托上调用它(如文档说明中所述) dataTaskWithURL:completionHandler