在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
发布它们。如果问题仍然存在,请运行静态分析器(“构建”菜单>>构建和分析),它通常很擅长查找与内存相关的问题。
答
你为什么要设置为零?
如果它是@property (retain) UILabel * labelDistance;
(和合成),那么只需release
它在dealloc
。或者你是否在摆弄那个伊娃?
注意:您的变量和属性应该以较低的字母“l”开头。
您应该在viewDidUnload中释放IBOutlets。因为当视图再次加载时,它会设置它们。 – rickharrison 2010-06-21 00:43:33
啊好点,我没有意识到他们是IBOutlets。 – indragie 2010-06-21 01:09:18
@rickharrison - 尽管如果它们是用'retain' setter语义构造的属性,它们将在设置新值时在合成设置器中释放。在这一点上,我认为你会冒过度释放它们的风险,如果你在viewDidUnload中也这样做了。 – 2010-06-22 12:50:38