Ich bin relativ neu in iPhone Entwicklung, so dass dies meine Schuld sein kann, aber es geht gegen das, was ich gesehen habe. :)UIAlertView -show verursacht ein Speicherleck
Ich denke, dass ich eine UIAlertView erstellen, die nur in diesem Vakuum der 'if' Aussage lebt.
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if(!data)
{
// Add an alert
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Unable to contact server"
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
NSLog(@"retain count before show: %i", alert.retainCount);
[alert show];
NSLog(@"retain count before release: %i", alert.retainCount);
[alert release];
NSLog(@"retain count after release: %i", alert.retainCount);
return nil;
}
Die Konsole protokolliert mich jedoch.
retain count before show: 1
retain count before release: 6
retain count after release: 5
Ich habe auch versucht, und fügte hinzu:
alert = nil;
nach der Veröffentlichung. Das bedeutet, dass der Retain-Wert 0 ist, aber ich zeige immer noch ein Leck. Und wenn es hilft, ist der Verantwortliche Rahmen des Lecks UIKeyboardInputManagerClassForInputMode. Ich benutze auch OS 4 Beta 3.
Also hat jemand irgendwelche Ideen, wie eine lokale UIAlertView die Anzahl zählen würde sich um 5 erhöhen, wenn Sie -show aufrufen?
Danke für Ihre Hilfe!
Ich sehe das gleiche - mit der Release-Version von iOS 4.1. Die Veröffentlichung scheint nicht wichtig zu sein, und ich habe stattdessen Autorelease versucht - das gleiche. Das muss ein Fehler im Betriebssystem sein, oder? – Axeva
Ich sehe das gleiche heute unter iOS 4.1, und danke für diese Frage. – AechoLiu
aber wie ist es möglich, dieses Problem zu lösen? Ich bin in der gleichen Situation. nach der Zuweisung ist der Retain-Account 1; nach dem Anzeigen von alertView der Retaincount ist 6 nach dem Loslassen retaincount bleibt 5 -> und ein Speicherverlust tritt auf –