我想知道两个NSURLConnection协议或方法(或它们实际被调用的)之间的区别。

我对Objective-C编程非常陌生,我正在尝试创建一个iOS应用,该应用可以从网站加载数据。我在看过/读过的教程中注意到,当他们使用connectionWithRequest时,它们还有其他方法对我来说是connectionWithRequest正常工作所需的方法。一个教程是this。这些方法是:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;


仅举两个。关于此,我还有一个问题:当调用或使用NSURLConnection connectionWithRequest:delegate时,这些方法是否自动调用?

我提到的两个NSURLConnection协议之间到底有什么区别?哪个更好用?

最佳答案

主要区别在于不同类型的回调:


方法-connectionWithRequest:delegate:使用委托,并且您必须实现didReceiveResponsedidReceiveData和其他使其有用。这比较复杂,但是允许您处理安全认证,进度跟踪和类似的事情。
方法+sendAsynchronousRequest:queue:completionHandler:使用块完成,与委托相比,它容易得多。它处理接收响应并附加正文数据,并简单地为您提供结果。


脚注:iOS 7引入了NSURLSessions的全新URL加载机制,可以代替NSURLConnection使用。

关于ios - NSURLConnection connectionWithRequest:delegate和sendAsynchronousRequest:queue:completionHandler之间的主要区别是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19664816/

10-11 07:55