首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Iphone >

[super dealloc]出现EXC_BAD_ACCESS是什么原因,该怎么解决

2012-03-08 
[super dealloc]出现EXC_BAD_ACCESS是什么原因主要代码是这样得:ReportScrollView.h文件NumberView*scores

[super dealloc]出现EXC_BAD_ACCESS是什么原因
主要代码是这样得:
ReportScrollView.h文件
  NumberView *scoresView;//总分数View.NumberView是自定义控件

ReportScrollView.m文件
  -(void)initData
{
   
  //加入分数
  scoresView = [[NumberView alloc]initWithFrame:CGRectMake(0,0,100,100)];
  [scoresView setNum:90];
  [self addSubview:scoresView];
}
//数据释放
-(void)dealloc
{
  if(scoresView != nil)
  [scoresView release];
  [super dealloc];
}

NumberView.m

- (void)dealloc {
  [super dealloc];//运行到这里,出现EXC_BAD_ACCESS错误,求解答,谢了!
}





[解决办法]
出现这个问题一般是由过多的对一块内存调用release的原因,也就是说,当对一个内存计数器已经是0的内存再次调用release,就会出这个问题,所以,请确认scoresView是否多次释放了?专门检查release.
[解决办法]
问题很有可能出自 NumberView 类
[解决办法]
使用NSZombie找出重复释放对象
[解决办法]
scoresView的类成员是否有多次RELEASE?
[解决办法]
retainCount这个值只是理论上的,在调试过程中,经常出现不正确的现象。
[解决办法]
出现EXC_BAD_ACCESS一般都是因为对象本来已经被释放了,又来了一次release
[解决办法]
在ReportScrollView.m 中scoresView release的地方 后面加一个 scoresView = nil 试一试 一般在viewUnload中这么干

热点排行