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

dug*_*gla 5 basic-authentication nsurlconnection ios nsurlconnectiondelegate

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

我想正确支持让用户取消身份验证挑战.因此,我向用户呈现的GUI具有取消按钮,问题是该按钮后面应该发生什么行为.

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

可作为iOS 5.0之前的非正式协议的一部分.

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

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

Cal*_*leb 4

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

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

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

两者-connection:didCancelAuthenticationChallenge:都有-connection:didFailWithError:相同的注释,即成为 iOS 5.0 之前的非正式协议的一部分。听起来您的连接无法加载数据,而不是被取消。如果您通过调用取消挑战,您可能会收到前一条消息:

[[challenge sender] cancelAuthenticationChallenge:challenge];
Run Code Online (Sandbox Code Playgroud)

如取消连接中所述。