在本地或实时服务器上,在模拟器 NSURL 中发送异步请求 快速响应,但在设备中响应延迟



NSString*strURL=[NStringStringWithFormat:@"%@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)
         {
         }
     }
 }];

这可能意味着应用程序的其他部分会在很长一段时间内占用主线程的运行循环。在主线程(特别是主NSOperation队列)空闲之前,处理响应的代码无法运行。如果主线程忙于做其他事情——在NSOperation队列、主运行循环或主调度队列上做工作——那么处理程序在完成之前不会开始运行。

请记住,iOS设备比模拟器慢得多,所以模拟器中快速的东西在实际设备上可能需要更长的时间。

我强烈建议使用Instruments为你的应用程序(在设备上)做一个时间档案,看看它在那段时间里在做什么,然后从那里开始。如果你看到明显的延迟,我怀疑你会很容易发现问题。

最新更新