«Потенциальная ошибка утечки» - но я ее не вижу - PullRequest
1 голос
/ 02 декабря 2011

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

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

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

  - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // create a tempKey String var, which will store the clicked-artist's 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];

}

Ответы [ 2 ]

4 голосов
/ 02 декабря 2011

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

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

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

someString = @"Blah";

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

0 голосов
/ 02 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...