我成功使用了NSURLConnectionDelegate的相当棒的connection:didReceiveAuthenticationChallenge:
委托方法。凉。
我想要正确支持让用户取消身份验证质询。因此,我向用户呈现的GUI有一个取消按钮,问题是该按钮后面应该发生什么行为。
目前我这样做[[challenge sender] cancelAuthenticationChallenge:challenge]
并且我已经实现了NSURLConnectionDelegate方法connection:didCancelAuthenticationChallenge:
。在Apple文档中,我注意到这个回调的相当模糊的注释:
作为iOS 5.0之前的非正式协议的一部分提供。
咦?实际触发的回调方法是connection:didFailWithError:
有人可以在这里说清楚吗?
答案 0 :(得分:4)
作为iOS 5.0之前的非正式协议的一部分提供。
这只是意味着所讨论的委托方法不是正式协议的一部分,即使用@protocol指令声明的协议。非正式协议中的方法通常与可以调用它们的类一起记录。
实际触发的回调方法是connection:didFailWithError:
{**}}和-connection:didCancelAuthenticationChallenge:
都有关于在iOS 5.0之前成为非正式协议一部分的相同说明。听起来你的连接无法加载数据,没有被取消。如果你通过调用取消了挑战,你可能会得到前一条消息:
-connection:didFailWithError: