线程1:EXC_BAD_ACCESS(代码= 2,地址= 0x0){内部开关案例}

时间:2012-07-10 11:51:26

标签: iphone ios5

我在storboard中创建了一个带有两个viewcontrollers的导航控制器。第一个视图控制器有一个开始按钮,我从那里缝到第二个视图控制器。在secondviewcontroller里面,我放置了一个段控件,它有三个带标题的段:Man,Truck,Movie。

在第二个viewcontroller的实现文件中声明并定义了setActiveModel方法。这种方法在segmentcontrol中有三个段的switch case。

最后在IBaction for segment control中调用了这个setActivemethod。

- (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];
}

2 个答案:

答案 0 :(得分:1)

您可以使用Instruments查找代码中发生过度释放的位置。 这是关于如何使用仪器的链接。 Eliminating Messages To Deallocated Objects

答案 1 :(得分:0)

你有没有尝试过使用

[self.m_truckModel setVisible:NO];

它有点奇怪的编码方式。 您还应该查看故事板。