0

NSString * strURL = [NSString stringWithFormat:@"%@action=getResForOffer&offerid=%@",SERVER_URL,strOfferID];

NSURL *url = [NSURL URLWithString:[strURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];

[request setHTTPMethod:@"GET"];

[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
 {
     if (error)
     {
         NSLog(@"%@",error.description);
     }
     else
     {
         NSMutableArray * arrJsonData = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

         NSLog(@"Json Data --> %@",arrJsonData);

         if (arrJsonData.count)
         {

         }
     }
 }];
4

1 に答える 1

0

これはおそらく、アプリの他の部分がメイン スレッドの実行ループを長時間拘束していることを意味します。応答を処理するコードは、メイン スレッド (特にメインの NSOperation キュー) がアイドル状態になるまで実行できません。メイン スレッドが別の処理 (NSOperation キュー、メイン実行ループ、またはメイン ディスパッチ キューでの作業) でビジー状態の場合、ハンドラーは終了するまで実行を開始しません。

iOS デバイスはシミュレーターよりもはるかに遅いことに注意してください。そのため、シミュレーターで高速であっても、実際のデバイスでは時間がかかる可能性があります。

Instruments を使用して (デバイス上で) アプリの時間プロファイルを作成し、その間にアプリが何をしているかを確認し、そこから移動することを強くお勧めします。顕著な遅延が発生している場合は、問題を簡単に見つけることができると思います。

于 2016-06-04T03:24:05.000 に答える