我想创建一个同步nsurlconnection请求。是的,我知道它的愚蠢和我知道的限制(冻结用户界面),但我想实现这个来石榴石我从服务器接收到的数据的原因是收到它的发送顺序,这是好处之一同步连接..如果我正确读取。如何创建同步NSURLConnection请求
我将使用Grand Central Dispatch来实现一些多线程以便运行同步请求并且不会影响主线程的UI ......但是现在可以稍后再来掌握同步连接。
的一个问题是,我不完全知道如何设置我的连接,同步..
这里是我的代码。
- (void)loadComics{
[comics removeAllObjects]; //clears object of any old values
[[self tableView] reloadData];
NSURL *url = [NSURL URLWithString:@"http://www.comicbookresources.com/feed.php?feed=previews"];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30];
//clear any existing connection
if (connectionInProgress) {
[connectionInProgress cancel];
[connectionInProgress release];
}
[xmlData release];
xmlData = [[NSMutableData alloc] init];
connectionInProgress = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[xmlData appendData:data];
}
- (void) connectionDidFinishLoading:(NSURLConnection *)connection{
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:xmlData];
[parser setDelegate:self];
[parser parse];
[parser release];
[[self tableView] reloadData];
}
任何例子都很棒。
你是什么意思的“我从服务器收到的数据是按照发送顺序接收的”石榴石?即使在后台线程中,同步网络几乎总是一个糟糕设计的指标。 – 2012-02-12 21:36:00
就我所知,异步有时可能会以错误的顺序接收数据。我必须与之通信的数据库引擎要求我以同步方式执行此操作,因为它的重要性在于以正确的顺序接收数据。为什么你认为它是一个糟糕的设计指标,我对你的观点很感兴趣,因为我目前只按照我的指示去做,但是如果我可以把一个案例交给数据库工程师,为什么他应该这样做,否则我会对听取您的意见感兴趣。 – 2012-02-12 21:51:26
这是不正确的 - 你不必担心接收连接:didReceiveData:'回调失序。你写的东西看起来很好 - 你可以在接收到数据时连接数据块,然后用'connectionDidFinishLoading:'中的完整数据做一些事情。这只会是一个问题,如果出于某种原因,您同时运行多个NSURLConnections,都使用相同的代理。但你通常不想那么做! – 2012-02-12 22:34:34