我们可以为 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 设置一个自定义委托对象吗的主要内容,如果未能解决你的问题,请参考以下文章

我们可以为 dart setter 方法使用多个参数吗?

我们可以为浏览器注册全局热键吗

我们可以为 NSURLSessionTaskDelegate 设置一个自定义委托对象吗

外键可以为空吗? [复制]

我们在哪里可以为 MainMenu.xib 编写 windowDidBecomeKey 方法

我们可以为单个数据库连接进行多个并行事务吗? [复制]