0

興味深い問題がありますが、なぜそれが起こっているのかわかりません。見落としている小さな問題かもしれません。

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 回戻った場合のみです。

4

1 に答える 1

0

メモリと効率のために、すべての UIViewControllers を (バッキング iVar を使用して) 強力なプロパティにして、有用なもののために十分長く存在することを保証します。

于 2012-03-26T21:02:36.880 に答える