2013-05-17 18 views
11
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http:///]; 
NSURLRequest *req = [[NSURLRequest alloc]initWithURL:url]; 
NSURLConnection *con = [[NSURLConnection alloc]initWithRequest:req delegate:self startImmediately:YES]; 

私のプロジェクトではNSURLConnectionsendSynchronousRequestを使用しました。それは時々私にクラッシュを与えます。非同期リクエストの例

このコードをAsynchronousRequestに変換します。私は適切なコードを見つけることができませんでした。

誰かが自分のコードに適したリンクまたはポストコードを教えてください。どんなhepでも感謝します。

+2

この質問はあまりにオープンエンドでローカライズされている可能性があります。私はあなたが何をしようとしているのか、何を試しているのか、なぜ人々がその要求に直接答えることができないのかを説明することをお勧めします。喜んで助けることができる人がたくさんいますが、あなたが試したこととそれがうまくいかないことを示すより具体的な質問は、最良の回答を得る傾向があります。 – gaige

+0

@gaige私はそれが閉じられていない方法が大好きです:) – Supertecnoboff

答えて

20

あなたができることはいくつかあります。

  1. sendAsynchronousRequestを使用して、コールバックブロックを処理できます。
  2. AFNetworkingライブラリを使用できます。ライブラリはすべてのリクエストを非同期で処理します。非常に使いやすくセットアップも簡単です。オプション2のための

    NSURL *url = [NSURL URLWithString:urlString]; 
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url]; 
    NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
    [NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
        if (error) { 
        //NSLog(@"Error,%@", [error localizedDescription]); 
        } 
        else { 
        //NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]); 
        } 
    }]; 
    

    コード:オプション1のため

コード

あなたはまず、プロジェクトに含める&ライブラリをダウンロードすることができます。次に、以下を実行します。設定時の投稿に従うことができますhere

NSURL *url = [NSURL URLWithString:@"http://httpbin.org/ip"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
    NSLog(@"IP Address: %@", [JSON valueForKeyPath:@"origin"]); 
} failure:nil]; 

[operation start]; 
+1

ネットワークが遅いときにユーザーのやりとりをブロックしますか? – Xcode

+0

私はあなたの1つのオプションを使用しました。それを処理する方法は成功しませんか? – Xcode

+0

エラーを処理するために、completionHandlerブロックでNSError *エラーを使用できます。 – Harish

関連する問題