У меня странная проблема, которая приводит к сбою моего приложения, и я хотел бы высказать несколько мнений, если это возможно.
У меня есть NSURLConnection, отправка данных POST во внешний файл PHP и получение ответа, который отображается на iPhone.
Все это прекрасно работает и может быть выполнено много раз без ошибок, без каких-либо утечек, обнаруженных в анализе, и без сбоев.
Приложение также имеет опцию «отправить ответ по электронной почте», и если она нажата, программа электронной почты открывается, и все также работает без проблем.
Однако при закрытии программы электронной почты и возвращении обратно в основное приложение, если теперь нажата кнопка «извлечения данных» и снова выполнено соединение NSURLConnection, приложение немедленно вылетает.
Я не могу проверить это на симуляторе, так как он не открывает программу электронной почты на симуляторе - это реальное тестирование только на iPhone. Все тесты и анализ, выполненные в XCode, обнаруживаются нормально и не указывают на какие-либо проблемы.
Весь мой код для NSURLConnection для POST и получения данных выглядит следующим образом:
- (void)FetchData {
result.text = @"";
emailbutton.hidden = YES;
emailbutton.enabled = NO;
NSString *queryStringFull = [queryStringFirst stringByAppendingString:textField.text];
NSURL *url = [NSURL URLWithString:@"http://www.mydomain.com/mypage.php"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
NSData *requestData = [queryStringFull dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPMethod:@"POST"];
[request setValue:@"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody: requestData];
[NSURLConnection connectionWithRequest:(request) delegate:self];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
responseData = [[NSMutableData alloc] init];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[responseData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSString* responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
if (![responseString isEqualToString:@"error"]) {
result.text = responseString;
emailbutton.hidden = NO;
emailbutton.enabled = YES;
}
[responseString release];
[responseData release];
}
Буду очень признателен за любые идеи или мысли о том, что является причиной этого и как его решить.