使用Apple推荐的NSURL委托方法

时间:2013-03-03 01:56:47

标签: xcode nsurlconnection

The answer to my original question使用以下代码。

NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:self.urlNameInput.text] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[NSURLConnection sendAsynchronousRequest:theRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *connection, NSData *data, NSError *error){...}];

我的原始代码不起作用,但如下所示。我的代码使用了Apple Docs中建议的一组委托方法(连接:didReceiveResponse:,connection:didReceiveData:,connection:didFailWithError:和connectionDidFinishLoading :)。

NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:self.urlNameInput.text] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
         if (theConnection) {
         receivedData = [NSMutableData data] ;
         } else {
         // Inform the user that the connection failed.
         NSLog(@"Their is an error with that URL.");
         };

委托方法是否与建议的代码兼容,如果是,我如何将它们集成到建议的代码中?

1 个答案:

答案 0 :(得分:3)

您可以使用其中一种。

您问题中的第一部分代码不使用任何委托方法。相反,您在完成处理程序中执行所有操作。您要么获取数据,要么得到错误。您无需处理附加数据或处理重定向。

如果您需要更多控制权,那么您必须使用旧表单以及适当的委托方法集。

完成处理程序版本更简单,除非您需要委托版本的灵活性,否则应该使用它。