"Потенциальная ошибка утечки" - но я этого не вижу

58
7

Я получаю сообщение "Потенциальная утечка" при выполнении анализа этого кода, который работает отлично, кстати, без ошибок или сбоев (это просто простой бит UINavigationController/TableView).

Полное сообщение, которое я получаю, это: "Потенциальная утечка объекта, выделенного и сохраненного в" tempKey ""

Это не имеет смысла для меня - может ли кто-нибудь это увидеть?

  - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// create a tempKey String var, which will store the clicked-artist name

// -- this here is the line the compiler says the error is in:
NSString *tempKey = [[NSString alloc] init];

if ([ArtisticStaffNames objectAtIndex:indexPath.row] == @"Jeff Smith")
tempKey = @"Jeff";
else if ([ArtisticStaffNames objectAtIndex:indexPath.row] == @"Dan Jones")
tempKey = @"Dan";
else if ([ArtisticStaffNames objectAtIndex:indexPath.row] == @"Matt Low")
tempKey = @"Mat";
else if ([ArtisticStaffNames objectAtIndex:indexPath.row] == @"Lisa Jennings")
tempKey = @"Lis";
else if ([ArtisticStaffNames objectAtIndex:indexPath.row] == @"Michael Bluarique")
tempKey = @"Mike";

artisticStaffDetailVC *artStaffVC = [[artisticStaffDetailVC alloc] initWithNibName: @"artisticStaffDetailVC" bundle:nil];
artStaffVC.key = tempKey;

[tempKey release];

// Sets the text of the BACK button on next screen to "back":
// alloc a UIBarButtonItem:
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] init];
backButton.title = @"Staff";

self.navigationItem.backBarButtonItem = backButton;
[backButton release];

// Pushes the next view/screen on:
[self.navigationController pushViewController:artStaffVC animated:YES];
[artStaffVC.key release];

}

спросил(а) 2011-12-02T19:49:00+04:00 8 лет, 10 месяцев назад
1
Решение
89

Анализатор правильный. Если вы это сделаете:

NSString* someString = [[NSString alloc] init];

У вас есть указатель на собственный NSString. Если вы сделаете это:

someString = @"Blah";

Вы назначили someString для указания на новый объект NSString и просочились первым. Эта строка не просто изменяет существующее содержимое строки. Это именно то, что вы делаете со своим tempKey.

ответил(а) 2011-12-02T19:54:00+04:00 8 лет, 10 месяцев назад
40

Используйте инструмент " Инструменты", чтобы узнать, есть ли у вас утечка и где его найти.

ответил(а) 2011-12-02T19:52:00+04:00 8 лет, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема