我们可以为 NSURLSessionTaskDelegate 设置一个自定义委托对象吗
Posted
技术标签:
【中文标题】我们可以为 NSURLSessionTaskDelegate 设置一个自定义委托对象吗【英文标题】:Can we set a custom delegate object for NSURLSessionTaskDelegate 【发布时间】:2014-06-17 18:31:28 【问题描述】:在 NSURLSession 中,我们通过
等方法将任务添加到会话中 dataTaskWithRequest: dataTaskWithRequest:completionHandler:据我了解,如果我们使用没有completionHandler 的或者使用nil 作为completionHandler 的,self 将被自动用作委托,我们可以期待委托方法被调用。我理解正确吗?
是否可以为每个任务指定不同的委托(除了 self )?
我检查了 sessionWithConfiguration:delegate:delegateQueue,我认为委托是一个 NSURLSessionDelegate。
【问题讨论】:
经过更多调查,似乎 sessionWithConfiguration:delegate:delegateQueue 是为所有协议设置委托的方式,包括 NSURLSessionDelegate、NSURLSessionTaskDelegate、NSURLSessionDownloadDelegate 和 NSURLSessionDataDelegate 【参考方案1】:回答我自己的问题。我们实际上可以使用 sessionWithConfiguration:delegate:delegateQueue 来设置委托。根据apple's URL Loading System Programming Guide,
如果您需要在非默认情况下处理身份验证或缓存 方式,您必须提供符合会话的委托 委托协议,一个或多个任务委托协议,或一些 这些协议的组合。此委托有多种用途
【讨论】:
以上是关于我们可以为 NSURLSessionTaskDelegate 设置一个自定义委托对象吗的主要内容,如果未能解决你的问题,请参考以下文章
我们可以为 NSURLSessionTaskDelegate 设置一个自定义委托对象吗