5

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

我想正确支持让用户取消身份验证挑战。所以,我呈现给用户的 GUI 有一个取消按钮,问题是该按钮后面应该发生什么行为。

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

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

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

有人可以在这里阐明一下吗?

4

1 回答 1

4

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

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

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

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

[[challenge sender] cancelAuthenticationChallenge:challenge];

取消连接中所述

于 2012-05-04T21:02:13.783 回答