/ / NSURLConnection stürzt die App ab, aber erst nach dem Öffnen und Schließen der E-Mail-App - iPhone, Xcode, Absturz, nsmutablearray, nsurlconnection

NSURLConnection stürzt die App ab, aber erst nach dem Öffnen und Schließen der E-Mail-App - iPhone, Xcode, Absturz, nsmutablearray, nsurlconnection

Ich habe ein seltsames Problem, das meine App zum Absturz bringt und zu dem ich, wenn möglich, ein paar Meinungen hätte.

Ich habe eine NSURLConnection, die POST-Daten an eine externe PHP-Datei sendet und eine Antwort erhält, die auf dem iPhone angezeigt wird.

Dies funktioniert alles in Ordnung und kann viele Male ohne Fehler ausgeführt werden, ohne dass Lecks in der Analyse auftauchen und ohne Abstürze.

Die App verfügt außerdem über die Option "E-Mail an die Antwort". Wenn diese Option gedrückt wird, wird das E-Mail-Programm geöffnet und alles funktioniert problemlos.

Wenn Sie jedoch das E-Mail-Programm schließen und zur Haupt-App zurückkehren, stürzt die App sofort ab, wenn Sie auf die Schaltfläche "Daten abrufen" klicken und die NSURLConnection erneut ausführen.

Ich kann dies nicht auf dem Simulator testen, da dies nicht der Fall istÖffnen Sie das E-Mail-Programm auf dem Simulator - dies ist beim echten Testen nur auf einem iPhone möglich. Alle Tests und Analysen, die mit Xcode durchgeführt werden, sind gut und weisen nicht auf Probleme hin.

Mein ganzer Code für die NSURLConnection zum POST und Abrufen der Daten lautet wie folgt:

- (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];
}

Ich wäre sehr dankbar für alle Ideen oder Gedanken darüber, was dies verursacht und wie man es lösen kann.

Antworten:

0 für die Antwort № 1

Eigentlich war es nicht die NSURLConnection!

Es stellte sich heraus, dass es sich um einen Image-Aufruf handelt, der nach dem NSURLConnection-Aufruf erfolgt. Das Bild wurde in viewdidload definiert, freigegeben und dann nicht definiert, nachdem die App aus dem Hintergrund zurückkehrte.

Das Hinzufügen eines "Retain" zur Image-Definition in der Viewdidload löste das Problem!