关于"didFailWithError
"和"connectionDidFinishLoading
"
他们都可以叫吗?还是总是非此即彼?
不可以,不能同时调用它们。
委托收到消息connection:didFailWithError:
后,它不会再收到指定连接的委托消息。
如果连接成功下载请求,则代理会收到connectionDidFinishLoading:
消息。委托将不会收到有关连接的进一步消息,并且可以释放NSURLConnection
对象。
http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html
虽然不明显,但文档声明只会调用这两个中的一个。它要么成功完成并调用 connectionDidFinishLoad,要么失败并显示错误并调用 didFailWithError。您可以在 NSURLConnectionDataDelegate 文档中找到 **connection:willSendRequest:redirectResponse: 方法。
编辑:看起来@erkanyildiz的答案显示了文档中更好的信息。
来自文档 https://developer.apple.com/library/mac/#documentation/Foundation/Reference/NSURLConnectionDelegate_Protocol/Reference/Reference.html
连接完成加载:
在连接成功完成加载时发送。
成功。似乎总是一个或另一个。