同期nsurlconnection要求を作成したいと思います。はい、私はその愚かなことを知っていると私は制限を知っている(UIをフリーズ)しかし、私はこれを実装するために私がサーバーから受信しているデータをガーネットに送信したい理由は、送信された順序で受信され、同期接続。もし正しく読めば。同期NSURLConnection要求を作成する方法
私はGrand Central Dispatchを使用していくつかのマルチスレッドを実現し、同期要求を実行し、メインスレッドのUIに影響を与えません...しかしこれは後で私がしたい同期接続をマスターします。
1つの問題は
はここに私のコードです..私は同期のように私の接続を設定する方法を正確にはわからないということです。- (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];
}
いずれの例も優れています。
「ガーネットによって、サーバーから受信したデータが送信された順序で受信されました」という意味はありますか?同期ネットワークは、バックグラウンドスレッドであっても、ほとんどの場合、悪い設計の指標となります。 –
私が知っている限り、非同期でデータが誤った順序で受信されることがあります。私が通信しなければならないデータベースエンジンは、正しい順序でデータを受信することが重要であるため、これを同期的に行う必要があります。なぜあなたはそれが悪いデザインの指標だと思っていますか、私は現在私があなたの視点に興味を持っているのは私が指示されているので、データベースエンジニアにケースを組み込むことができれば、あなたの意見に耳を傾けることができます。 –
これは正しくありません。あなたは 'connection:didReceiveData:'コールバックの受信を心配する必要はありません。あなたが書いたことはうまく見えます - データを受け取ったときにそれらのチャンクを連結し、 'connectionDidFinishLoading:'で完全なデータで何かをするだけです。これは、何らかの理由で、同じデリゲートを使用して、同時に複数のNSURLConnectionを実行していた場合にのみ問題になります。しかし、あなたは一般的にそうしたくありません! –