我在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];
}
答案 0 :(得分:1)
您可以使用Instruments查找代码中发生过度释放的位置。 这是关于如何使用仪器的链接。 Eliminating Messages To Deallocated Objects
答案 1 :(得分:0)
你有没有尝试过使用
[self.m_truckModel setVisible:NO];
它有点奇怪的编码方式。 您还应该查看故事板。