興味深い問題がありますが、なぜそれが起こっているのかわかりません。見落としている小さな問題かもしれません。
UITableView があり、didselectrowatindex パスで新しいビューに移動し、次のビューに移動して両方のビューをポップして最初のビューに戻ると、アプリが EXC_BAD_ACCESS でクラッシュします
それで私はinstrumentsとNSZombieを使ってdidselectrowatindexpathでmallocを見つけましたが、その理由はわかりません
これが私のコードです:
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];
編集:
私が言及するのを忘れていたのは、場合によっては、この同じクラスの別のクラスをナビゲーションコントローラーにプッシュすることですが、例外がスローされるのは、WorkflowViewController に移動し、次に次のビューコントローラーに移動してから 2 回戻った場合のみです。