在viewdidunload中获取EXC_BAD_ACCESS

问题描述:

当我浏览应用程序时,我收到了一些ViewController的异常。在viewdidunload中获取EXC_BAD_ACCESS

在viewdidunload中发生异常,我认为这是由于内存警告。 以下行会获取IBOulet对象的异常。

self.LabelDistance = nil; 
self.distanceSlider = nil; 

请大家帮忙。 谢谢

尝试:

[self.labelDistance release]; 
[self.distanceSlider release]; 

代替。另外,你不应该在viewDidUnload发布ivars,在dealloc发布它们。如果问题仍然存在,请运行静态分析器(“构建”菜单>>构建和分析),它通常很擅长查找与内存相关的问题。

+0

您应该在viewDidUnload中释放IBOutlets。因为当视图再次加载时,它会设置它们。 – rickharrison 2010-06-21 00:43:33

+0

啊好点,我没有意识到他们是IBOutlets。 – indragie 2010-06-21 01:09:18

+0

@rickharrison - 尽管如果它们是用'retain' setter语义构造的属性,它们将在设置新值时在合成设置器中释放。在这一点上,我认为你会冒过度释放它们的风险,如果你在viewDidUnload中也这样做了。 – 2010-06-22 12:50:38

你为什么要设置为零?

如果它是@property (retain) UILabel * labelDistance;(和合成),那么只需release它在dealloc。或者你是否在摆弄那个伊娃?

注意:您的变量和属性应该以较低的字母“l”开头。