Я относительно новичок в разработке iPhone, так что это может быть моя ошибка, но это противоречит тому, что я видел. :)UIAlertView -show вызывает утечку памяти
Я думаю, что я создаю UIAlertView, который живет именно в этом вакууме оператора if.
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;
}
Однако консольные журналы меня дезориентируют.
retain count before show: 1
retain count before release: 6
retain count after release: 5
Я попытался также добавил:
alert = nil;
после выпуска. Это делает счетчик удержания 0, но я все еще вижу утечку. И если это помогает, Ответственный кадр утечки - UIKeyboardInputManagerClassForInputMode. Я также использую OS 4 Beta 3.
Итак, у кого есть идеи, как локальный счет сохранения UIAlertView будет увеличиваться на 5 при вызове -show?
Благодарим за помощь!
Я вижу то же самое - с версией iOS 4.1. Релиз, похоже, не имеет значения, и я попробовал Autorelease вместо этого - то же самое. Это должно быть ошибка в ОС, не так ли? – Axeva
Я вижу то же самое сегодня в iOS 4.1, и спасибо за этот вопрос. – AechoLiu
но как можно решить эту проблему? Я в такой ситуации. после выделения удержания составляет 1; после показания alertView для сохранения остатка 6 после освобождения его остатка сохраняется 5 -> и происходит утечка памяти – 2011-10-08 12:44:17