"Потенциальная ошибка утечки" - но я этого не вижу
Я получаю сообщение "Потенциальная утечка" при выполнении анализа этого кода, который работает отлично, кстати, без ошибок или сбоев (это просто простой бит 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];
}
Анализатор правильный. Если вы это сделаете:
NSString* someString = [[NSString alloc] init];
У вас есть указатель на собственный NSString. Если вы сделаете это:
someString = @"Blah";
Вы назначили someString
для указания на новый объект NSString и просочились первым. Эта строка не просто изменяет существующее содержимое строки. Это именно то, что вы делаете со своим tempKey
.
Используйте инструмент " Инструменты", чтобы узнать, есть ли у вас утечка и где его найти.