当前位置: 代码迷 >> Iphone >> [super dealloc]出现EXC_BAD_ACCESS是什么原因,该怎么解决
  详细解决方案

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

热度:310   发布时间:2016-04-25 06:47:28.0
[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中这么干
  相关解决方案