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.");
};
委托方法是否与建议的代码兼容,如果是,我如何将它们集成到建议的代码中?
答案 0 :(得分:3)
您可以使用其中一种。
您问题中的第一部分代码不使用任何委托方法。相反,您在完成处理程序中执行所有操作。您要么获取数据,要么得到错误。您无需处理附加数据或处理重定向。
如果您需要更多控制权,那么您必须使用旧表单以及适当的委托方法集。
完成处理程序版本更简单,除非您需要委托版本的灵活性,否则应该使用它。