NSURLConnectionDelegate。如何取消身份验证挑战?

时间:2012-05-04 16:09:09

标签: ios nsurlconnection basic-authentication nsurlconnectiondelegate

我成功使用了NSURLConnectionDelegate的相当棒的connection:didReceiveAuthenticationChallenge:委托方法。凉。

我想要正确支持让用户取消身份验证质询。因此,我向用户呈现的GUI有一个取消按钮,问题是该按钮后面应该发生什么行为。

目前我这样做[[challenge sender] cancelAuthenticationChallenge:challenge]并且我已经实现了NSURLConnectionDelegate方法connection:didCancelAuthenticationChallenge:。在Apple文档中,我注意到这个回调的相当模糊的注释:

作为iOS 5.0之前的非正式协议的一部分提供。

咦?实际触发的回调方法是connection:didFailWithError:

有人可以在这里说清楚吗?

1 个答案:

答案 0 :(得分:4)

  

作为iOS 5.0之前的非正式协议的一部分提供。

这只是意味着所讨论的委托方法不是正式协议的一部分,即使用@protocol指令声明的协议。非正式协议中的方法通常与可以调用它们的类一起记录。

  

实际触发的回调方法是connection:didFailWithError:

{**}}和-connection:didCancelAuthenticationChallenge:都有关于在iOS 5.0之前成为非正式协议一部分的相同说明。听起来你的连接无法加载数据,没有被取消。如果你通过调用取消了挑战,你可能会得到前一条消息:

-connection:didFailWithError:

Canceling the Connection中所述。