线程1:EXC_BAD_ACCESS(code = 2,address = 0x0){inside switch case}
问题描述:
我已经在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];
}
答
你有没有试过用
[self.m_truckModel setVisible:NO];
它是一个有些奇怪的编码方式。 你也应该查看故事板。
[我得到了BAD_ACCESS错误,在调试器中将viewdidload方法转移到了我将setActiveModel初始化为整数0的那一行。] ---- ---- – strawberry 2012-07-10 11:53:09
您的m_truckModel在到达该行代码之前已经发布。检查(并)发布你如何初始化m_truckModel以及如何释放它。 它正在自动发布? – Maggie 2012-07-10 11:55:16
我建议在乐器中运行你的应用程序(并选择僵尸)。我的猜测是,m_truckModel发布的地方超过了它的保留范围(您是否使用ARC?) – user1071136 2012-07-10 11:55:56