为什么AFNetworking会在第一次请求时挂起?

时间:2015-11-27 16:25:53

标签: ios objective-c afnetworking afnetworking-2

我对此完全感到困惑。每次我在模拟器或真实设备上测试我的应用程序时,它会在这段代码上挂起30,40,60秒,但是对此API调用的所有后续请求都将以毫秒为单位加载。

我认为这是第一次与DNS解析有关,因此我切换到IP地址进行测试,但没有解决问题。

如果它是应用程序启动后的第一个请求,它将暂停大量时间,一旦加载,您可以打开相同数据集的视图,然后加载列表很快。

有什么建议吗?

-(void)getVendorImages {
    //Alloc the image list
    self.imageList = [[NSMutableArray alloc] init];

    // Prepare the request
    NSString* vendorImagesApi = [NSString stringWithFormat:@"%@%@",@"http://example.com/api/v1/vendor/images/",self.imageData.vendorId];

    NSLog(@"Getting list of images %@",vendorImagesApi);

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [manager GET:vendorImagesApi
      parameters:nil
         success:^(AFHTTPRequestOperation *operation, id responseObject) {

//             NSLog(@"JSON: %@", responseObject);

             //Get images
             for (id imageData in responseObject)
             {
                 // prepare image url
                 NSString* imageUrl = [NSString stringWithFormat:@"%@%@%@",@"http://example.com/images/",imageData[@"id"],@"-650x650.jpg"];
                 NSLog(@"Putting this in in a list: %@", imageUrl);

                 [self.imageList addObject:imageUrl];
             }
             [self.tableView reloadData];

         } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
             NSLog(@"Error: %@", error);
         }];
}

修改

这是线程堆栈

enter image description here

1 个答案:

答案 0 :(得分:1)

所以经过一堆挖掘,我删除了AFNetworking的所有文件,然后再次安装它,包括UIKit + AFNetworking文件夹,之后我删除了所有框架并添加了UIKit和SystemConfig。最后,我在应用程序开头加载的一个视图有自己的NSURLConnectionDelegate。我删除了所有这些并让它使用AFNetworking,这就是诀窍。显然,第一次阻止AFNetworking连接的运行是因为它可能会争夺谁可​​以使用该服务。