2012-07-10 43 views
3

我已經在storboard中創建了一個帶有兩個viewcontrollers的導航控制器。第一個視圖控制器有一個從第二個視圖控制器開始的開始按鈕。在第二個視圖控制器中,我放置了一個包含三個片段的片段控件:人,卡車,電影。線程1:EXC_BAD_ACCESS(code = 2,address = 0x0){inside switch case}

在第二個viewcontroller的實現文件中聲明並定義了setActiveModel方法。該方法在段控制中具有三段的切換情況。

最後在用於段控制的IBaction裏面調用了這個setActive方法。

- (void) setActiveModel: (int) modelIndex 
{ 
    switch (modelIndex) 
    { 
     case 0: 
      m_truckModel->setVisible(false); **---->>[ I get BAD_ACCESS error in this line which steps over in the debugger to viewdidload method to the line where I initialize setActiveModel to integer 0 ] <<-----** 
      m_metaioMan->setVisible(true); 

      // stop the movie 
      m_moviePlane->stopMovieTexture(); 
      m_moviePlane->setVisible(false); 
      m_moviePlaneButton->setVisible(false); 
      break; 

     case 1: 
      m_truckModel->setVisible(true); 
      m_metaioMan->setVisible(false);   

      // stop the movie 
      m_moviePlane->stopMovieTexture(); 
      m_moviePlane->setVisible(false); 
      m_moviePlaneButton->setVisible(false); 
      break; 

     case 2: 
      m_truckModel->setVisible(false); 
      m_metaioMan->setVisible(false); 

      m_moviePlane->setVisible(false); 
      m_moviePlaneButton->setVisible(true); 
      break; 
    } 
} 

- (IBAction)onSegmentControlChanged:(UISegmentedControl*)sender 
{ 
    [self setActiveModel:sender.selectedSegmentIndex]; 
} 
+0

[我得到了BAD_ACCESS錯誤,在調試器中將viewdidload方法轉移到了我將setActiveModel初始化爲整數0的那一行。] ---- ---- – strawberry 2012-07-10 11:53:09

+0

您的m_truckModel在到達該行代碼之前已經發布。檢查(並)發佈你如何初始化m_truckModel以及如何釋放它。 它正在自動發佈? – Maggie 2012-07-10 11:55:16

+1

我建議在樂器中運行你的應用程序(並選擇殭屍)。我的猜測是,m_truckModel發佈的地方超過了它的保留範圍(您是否使用ARC?) – user1071136 2012-07-10 11:55:56

回答

0

你有沒有試過用

[self.m_truckModel setVisible:NO]; 

它是一個有些奇怪的編碼方式。 你也應該查看故事板。

相關問題