0

我最初的问题的答案使用以下代码。

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 中建议的一组委托方法(connection: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.");
         };

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

4

1 回答 1

3

您要么使用其中一个。

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

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

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

于 2013-03-03T03:58:23.243 回答