Я относительно новичок в программировании Какао, и некоторые аспекты управления памятью все еще беспокоят меня.
В этом случае я создаю UINavigationController, используя сообщение alloc, и инициализирую его с помощью контроллера UIView.Затем я представляю представление модально, передавая его в метод presentModalViewController.Ниже приведен код:
- (void)tableView:(UITableView *)tableView
accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Tapped on disclosure button");
NewPropertyViewController *newProperty = [[NewPropertyViewController alloc]
initWithDictionary];
newProperty.editProperty = [fetchedResultsController objectAtIndexPath:indexPath];
UINavigationController *newPropertyNavigationController = [[UINavigationController
alloc]
initWithRootViewController:newProperty];
[newProperty setPropertyDelegate:self];
[self presentModalViewController:newPropertyNavigationController animated:YES];
[newProperty release];
[newPropertyNavigationController release];
}
В соответствии с правилами сохранения количества, если я отправляю сообщение «alloc» классу, экземпляр этого класса возвращается с сохранением count 1, и я отвечаю завыпуская это.В приведенном выше коде я освобождаю экземпляр newPropertyNavigationController после передачи его в modalViewController и представления его.Когда я отклоняю модальное представление, приложение вылетает.
Если я закомментирую последнюю строку, приложение не вылетает.
Почему это происходит?Является ли конкретное сообщение alloc / init для UINavigationController работающим не так, как оно работает в других классах, т.е.возможно, он возвращает автоматически выпущенный экземпляр?
Спасибо!
Питер