Попытка понять, что NavigationController сохраняет счетчик для ViewControllers в своем стеке - PullRequest
0 голосов
/ 29 апреля 2010

У меня есть UITableViewController в качестве rootViewController для моего navigatorController. Когда я нажимаю на ячейку таблицы, я делаю следующее:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath   *)indexPath {
MessageHistory *msg = (MessageHistory *)[[self fetchedResultsController]objectAtIndexPath:indexPath];
ConversationViewController *chatController = [[ConversationViewController alloc]initWithNibName:@"ConversationView" bundle:nil andUser:msg.user];
[self.navigationController pushViewController:chatController animated:YES];
[chatController release];

Но когда я возвращаюсь из chatController (используя кнопку «Назад» на панели навигации), я получаю «EXC_BAD_ACCESS»

комментируя

//[chatController release];

решает проблему. Как? Я думал, что при нажатии на navigationController добавляет счетчик сохранения, а когда всплывающие из него освободить его?
Также я полагаю, что если я не включаю релиз после нажатия на navcontroller, я создаю утечку.
Есть идеи, что здесь происходит?

1 Ответ

0 голосов
/ 29 апреля 2010

У меня была эта проблема несколько раз, и я почти сходил с ума, пытаясь найти ошибку.

В моем случае у меня был второй вид UIWebView с установленным UIViewController в качестве его делегата. В моем методе dealloc UIViewController я забыл поставить webView.delegate = nil.

Когда второй UIViewController был извлечен и, таким образом, освобожден, UIWebView отправлял сообщение своему делегату (второй UIViewController, которого больше не существует).

Не знаю, относится ли это к вам, но я трачу дни на поиски этой ошибки, поэтому, возможно, она поможет.

...