Прежде всего, я никогда не видел так много проблем с памятью в моем приложении, так как я начал помещать "себя" везде после прочтения статьи о том, как память ведет себя в obj-C. Теперь я получаю все виды проблем (показывает неряшливость моего кодирования). Конечно, я новичок в Objective-C, и я признаю, что у меня никогда в жизни не было столько проблем с управлением памятью. Но я считаю, что это требует практики, чтобы привыкнуть к этому.
Теперь перейдем к моему вопросу.
У меня есть свойство интерфейса класса (self.todoCreate), которое содержит ссылку на вышеуказанный контроллер. К этому контроллеру можно перейти, нажав кнопку.
@property (nonatomic, retain) TodoTaskCreateController *todoCreate;
Код ниже - это фрагменты, которые вызывают изменение вида навигации:
TodoTaskCreateController *viewController = [[TodoTaskCreateController alloc]
initWithNibName:@"TodoTaskCreateController"
bundle:[NSBundle mainBundle]];
self.todoCreate = viewController;
[viewController release];
// slide-in todoCreate controller.
if (self.navigationController != nil && self.todoCreate != nil) {
[self.navigationController pushViewController:self.todoCreate animated:YES];
}
Итак, вот моя проблема:
При первом запуске я работаю.
Когда я на втором экране просмотра, я возвращаюсь к основному виду.
И если я попытаюсь снова перейти во второй раз, то приложение вылетает, именно там, где назначается self.todoCreate
viewController
.
Обратите внимание, что в методе viewDidAppear
основного представления я вызываю [self.todoCreate release]
.
Может кто-нибудь объяснить это?
PS - Неудивительно, что многие приложения для iPhone случайно вылетают.