我想知道这两个 NSURLConnection 协议(protocol)或方法(或它们实际调用的任何内容)的区别。
我是 Objective-C 编程的新手,我正在尝试创建一个从网站加载数据的 iOS 应用程序。我在看过/读过的教程中注意到,当他们使用 connectionWithRequest 时,他们还有其他方法,这些方法在我看来是 connectionWithRequest 正常工作所需的方法。一个教程是 this .这些方法是:
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
仅举两个例子。对此,我还有一个问题:当调用或使用 NSURLConnection connectionWithRequest:delegate 时,是否会自动调用这些方法?
我提到的两个 NSURLConnection 协议(protocol)到底有什么区别?哪个更好用?
最佳答案
主要区别在于不同类型的回调:
方法
-connectionWithRequest:delegate:
使用委托(delegate),您必须实现didReceiveResponse
、didReceiveData
和其他方法才能发挥作用。这更复杂,但允许您处理安全身份验证、进度跟踪和类似的事情。方法
+sendAsynchronousRequest:queue:completionHandler:
使用 block 完成,与委托(delegate)相比,这容易得多。它处理接收响应和附加主体数据,并简单地为您提供结果。
脚注:iOS 7 引入了全新的 NSURLSessions
URL 加载机制,可以用来代替 NSURLConnection
。
关于ios - NSURLConnection connectionWithRequest :delegate and sendAsynchronousRequest:queue:completionHandler? 之间的主要区别是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19664816/