Solicitação ASIHTTPRequest expira

Eu tenho trabalhado nessa questão há muito tempo e não tenho certeza de como proceder para resolvê-la.

Eu tenho um ASIHTTPRequest simples. O código é postado abaixo.

O aplicativo sempre funciona quando eu o executo pela primeira vez. Eu tenho uma visão de tabela que eu posso puxar para atualizar, que inicia o ASIHTTPRequest, e posso atualizar quantas vezes eu quiser sem problema. Eu posso enviar o aplicativo para o fundo e trazê-lo de volta e tudo funciona bem. Mas se eu deixar o aplicativo por algumas horas e voltar, às vezes eu começarei a receber um erro de tempo limite da solicitação. Quando isso ocorrer, o erro será repetido toda vez que eu tentar atualizar e nunca consigo me conectar novamente sem realmente desligar o aplicativo e reiniciá-lo.

Eu não acredito que o problema é com o meu URL, porque ele pode ser preso em um dispositivo enquanto estiver bem em outro dispositivo. Eu nunca consegui obter o erro de tempo limite no simulador.

Eu posso imaginar por que eu poderia obter o erro de tempo limite uma vez, mas não consigo entender por que, uma vez iniciado, o erro nunca para. Eu realmente não tenho ideia de onde procurar para tentar consertar isso, ou como eu poderia depurá-lo.

Pode ser relevante observar que estou usando o TestFlightLive, o GoogleAnalytics e o Urban Airship no meu aplicativo. Talvez uma dessas bibliotecas esteja causando um problema com meu comportamento de rede?

Aqui está o código:

- (void)getData
{    
    NSURL *url = [NSURL URLWithString:@"http://www.mysite.com/appname/latestData.py?callback=?"];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setDelegate:self];
    [request setTimeOutSeconds:20.0];
    [request startAsynchronous];
}

- (void)requestFinished:(ASIHTTPRequest *)request
{    
    NSData *responseData = [request responseData];

    DLog(@"requestFinished entered");

    NSString *dataString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

    // Update the data model
    if (dataString != nil)
    {
        SBJsonParser *jsonParser = [[SBJsonParser alloc] init];              
        NSDictionary *dataDictionary = [jsonParser objectWithString:dataString error:NULL];
        [self updateDataModel:dataDictionary];
    }        

    [self refreshIsFinished];
}

- (void)requestFailed:(ASIHTTPRequest *)request
{
    NSError *error = [request error];

    // inform the user
    ELog(@"Connection failed! Error - %@ %@",
         [error localizedDescription],
         [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil
                                                        message:NSLocalizedString(@"CONNECTION_FAILED_MESSAGE",nil) 
                                                       delegate:nil 
                                              cancelButtonTitle:NSLocalizedString(@"CLOSE",nil) 
                                              otherButtonTitles:nil];

    [alertView show];

    [self updateUI];
    [self refreshIsFinished];
}

questionAnswers(0)

yourAnswerToTheQuestion