2012-03-26 17 views
0

私は興味深い問題があり、なぜそれが起こっているのかわからない、私が見落としているほど小さいかもしれない。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回だけ戻るとき

+0

新しいViewControllerをメソッドiVarの代わりに強いプロパティにした場合はどうでしょうか?それはあまりに早くリリースされないという保証をあなたに与えるでしょう。 – CodaFi

+0

すでにリリースされているオブジェクトにアクセスしようとすると、EXC_BAD_ACCESSエラーが発生します。元のビューにポップバックするために使用するメソッドにコードスニペットをポストする必要があります。あなたは少なくとも1つの他のビューを押していると述べました。おそらくあなたはそこに問題のオブジェクトを公開していますか? – Justin

+0

didSelectRowAtIndexPathメソッドを表示できますか?トレースバック全体を貼り付けるだけです。エラーの詳細を知るには、ターミナルからmalloc_historyを使用します。 –

答えて

0

メモリと効率を上げるために、すべてのUIViewControllersを強力なプロパティ(iVarバッキング付き)にして、何か有用なものに十分長く滞在するようにします。

関連する問題