私は興味深い問題があり、なぜそれが起こっているのかわからない、私が見落としているほど小さいかもしれない。NSZombie in didSelectRowAtIndexPath
私はのUITableViewを持っていると私は新しいビューに移動し、私のdidselectrowatindexパスで、私は、次のビューに移動し、そこで、EXC_BAD_ACCESS
バック最初にして、アプリのクラッシュに取得するには、両方のビューをポップ私は楽器を使用して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];
はEDIT:
何か忘れてしまったことは、同じクラスの別のものをnavigationcontrollerにプッシュすることですが、WorkflowViewControllerに移動してから次のviewcontrollerに移動してから、例外がスローされた2回だけ戻るとき
新しいViewControllerをメソッドiVarの代わりに強いプロパティにした場合はどうでしょうか?それはあまりに早くリリースされないという保証をあなたに与えるでしょう。 – CodaFi
すでにリリースされているオブジェクトにアクセスしようとすると、EXC_BAD_ACCESSエラーが発生します。元のビューにポップバックするために使用するメソッドにコードスニペットをポストする必要があります。あなたは少なくとも1つの他のビューを押していると述べました。おそらくあなたはそこに問題のオブジェクトを公開していますか? – Justin
didSelectRowAtIndexPathメソッドを表示できますか?トレースバック全体を貼り付けるだけです。エラーの詳細を知るには、ターミナルからmalloc_historyを使用します。 –