У меня есть интересная проблема, и я не могу понять, почему это происходит, может быть, что-то маленькое, что я пропускаю.NSZombie in didSelectRowAtIndexPath
У меня есть UITableView и в моем didselectrowatindex пути я перейти к новому взгляду, я затем перейти к следующему представлению и поп обе точки зрения, чтобы вернуться к первому, а затем сбои приложений с EXC_BAD_ACCESS
Так Я использовал инструменты и NSZombie и нашел таНос в didselectrowatindexpath, но я понятия не имею, почему
Вот мой код:
if([workflowswithdirectories count] == 0)
{
WorkflowViewController *aWorkFlow = [[WorkflowViewController alloc] init];
MenuObject *obj = [workflownames objectAtIndex:[indexPath row]];
aWorkFlow.heading = obj.name;
aWorkFlow.workId = obj.workflowid;
aWorkFlow.siteId = obj.siteid;
aWorkFlow.item = obj;
[self.navigationController pushViewController:aWorkFlow animated:YES];
}
else if([workflownames count] == 0)
{
WorkflowListViewController *work = [[WorkflowListViewController alloc] init];
work.siteId = self.siteId;
MenuObject *obj = [workflowswithdirectories objectAtIndex:[indexPath row]];
work.menu = obj.next;
work.heading = obj.name;
[self.navigationController pushViewController:work animated:YES];
}
else
{
if([indexPath section] == 0)
{
WorkflowListViewController *work = [[WorkflowListViewController alloc] init];
work.siteId = self.siteId;
MenuObject *obj = [workflowswithdirectories objectAtIndex:[indexPath row]];
work.menu = obj.next;
work.heading = obj.name;
[self.navigationController pushViewController:work animated:YES];
}
else
{
WorkflowViewController *aWorkFlow = [[WorkflowViewController alloc] init];
MenuObject *obj = [workflownames objectAtIndex:[indexPath row]];
aWorkFlow.heading = obj.name;
aWorkFlow.workId = obj.workflowid;
aWorkFlow.siteId = obj.siteid;
aWorkFlow.item = obj;
[self.navigationController pushViewController:aWorkFlow animated:YES]; //Malloc is on this line
}
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
EDIT:
Что-то, о чем я забыл упомянуть, в некоторых случаях я нажимаю еще один из этого же класса на диспетчер навигации, но это происходит только при переходе к WorkflowViewController, а затем в следующий диспетчер представлений, а затем обратно в два раза больше, чем исключение.
Что делать, если вы сделали свой новый ViewController сильным свойством вместо метода iVar. Это даст вам гарантию, что он не будет выпущен слишком рано. – CodaFi
Ошибки EXC_BAD_ACCESS возникают при попытке получить доступ к уже выпущенному объекту. Вы должны опубликовать фрагмент кода для методов, которые вы используете, чтобы вернуться к исходному виду. Вы упомянули, что вы выдвигаете хотя бы один вид. Может быть, вы выпускаете этот объект? – Justin
Можете ли вы показать нам метод didSelectRowAtIndexPath? Просто вставьте весь трафик. Чтобы узнать больше об ошибке, используйте malloc_history из терминала. –