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

私のプロジェクトではsendSynchronousRequest、 onを使用しましたNSURLConnection。時々クラッシュします。

そこで、このコードを に変換しますAsynchronousRequest。適切なコードが見つかりませんでした。

誰かが私のコードに適したリンクまたはポストコードを教えてください。任意のhepをいただければ幸いです。

4

2 に答える 2

22

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

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

オプション 1 のコード:

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]);
  }
}];

オプション 2 のコード:

ライブラリをダウンロードして、最初にプロジェクトに含めることをお勧めします。次に、次の操作を行います。ここで設定に関する投稿をフォローできます

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];
于 2013-05-17T11:38:02.713 に答える