3

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

在第二个视图控制器的实现文件中声明并定义了 setActiveModel 方法。此方法在段控制中具有三个段的切换情况。

最后在 IBaction 中用于段控制,称为 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];
}
4

2 回答 2

1

您可以使用 Instruments 找出代码中发生过度释放的位置。这是有关如何使用仪器的链接。 消除消息到释放对象

于 2012-09-11T21:05:10.107 回答
0

你有没有尝试过使用

[self.m_truckModel setVisible:NO];

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

于 2013-07-02T01:31:54.150 回答