2014-06-17 39 views
1

在NSURLSession,我们通过以下方法添加任务到会话像我们可以设置自定义委托对象NSURLSessionTaskDelegate

  • dataTaskWithRequest:
  • dataTaskWithRequest:completionHandler:

据我了解,如果我们使用没有completionHandler的函数或者使用nil作为completionHandler,self将被自动用作委托,我们可以期待调用委托方法。我理解正确吗?

是否有可能为每个任务指定不同的委托(除自我)?

我检查了sessionWithConfiguration:delegate:delegateQueue,我认为委托是一个NSURLSessionDelegate。

+1

随着越来越多的调查,似乎sessionWithConfiguration:委托:delegateQueue是为所有协议,包括NSURLSessionDelegate,NSURLSessionTaskDelegate,NSURLSessionDownloadDelegate和NSURLSessionDataDelegate委托方式 – jqyao

回答

2

回答我自己的问题。我们实际上可以使用sessionWithConfiguration:delegate:delegateQueue来设置委托。据apple's URL Loading System Programming Guide

,如果你需要处理在非默认 方式验证或缓存,您必须提供符合会话 委托协议,一个或多个任务委托协议,或部分委托 的组合这些协议。此委托一举多得