2011-04-27 87 views
0

我想要做的按钮CLCK以下的事情:“EXC_BAD_ACCESS”我该如何解决这个问题?

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if (buttonIndex == 0) 
    { 
     if (QuestionMutableArray==nil) { 
      [self testIterator]; 
     } 
     else 
     { 
      [myMutableArray release]; 
      [myDictionary release]; 
      [self dismissModalViewControllerAnimated:YES]; 

      //[self release]; 
     } 
    } 
} 

这段代码可以追溯到parentView控制器......当我再次来此的tableView后,我想重装我的tableView新的NSMutableArray。如何用dismissModalViewController清空我的集合(NSMutableArray或字典)?

回答

0

不要释放它使对象nil

1

当您尝试访问已释放的内存时,出现EXC_BAD_ACCESS错误。也许你试图在释放它们之后访问数组或字典。相反,请从数组或字典中删除对象。

+0

- (无效)alertView:(UIAlertView中*)alertView clickedButtonAtIndex:(NSInteger的)buttonIndex { 如果(buttonIndex == 0){ \t \t \t \t [自dismissModalViewControllerAnimated:YES]; \t \t \t \t \t [QuestionMutableArray removeAllObjects]; \t \t \t \t XmlManipulatorObject = [[xmlManipulator alloc] init]; \t \t QuestionMutableArray = [[XmlManipulatorObject ReadXml] retain]; \t \t [self.tableView release]; \t \t \t \t }}我照你说的从Array.But删除所有对象我不是刚刚从那里我来到back.What可能是解决让我List.It的加载新的数据已经试过? – 2011-04-27 19:21:32

0

EXC_BAD_ACCESS通常来自两方面的原因:

  • 字符串不是开始 '@' 符号和
  • 可怜的内存管理。

在你的情况下,我假设你释放数组和字典,但是你没有正确初始化。确保在每次使用之前对它们进行了适当的初始化,并保持保留,直到完成它们。这也可能是由于在界面构建器上玩游戏引起的:我记得多次连接一个IBOutlet并确定该名称没有任何意义,并重命名该属性。每次连接之后,xcode会自动在dealloc方法中放入一个release语句,如果属性已经释放两次,您可能还想在那里查看是否在该视图控制器中使用了IB。