我正在处理 viewDidUnload 和 dealloc 方法,并且在调用 [super dealloc] 时发现了一个问题;在父视图控制器中。
我有很多带有自定义代码的视图控制器,我把它们放在了父视图控制器上。因此,在定义视图控制器时,我设置了对超类的引用:
@interface LoginViewController : AbstractViewController
然后,在 dealloc 方法中,我调用 AbstractViewController dealloc 方法:
//(Login View Controller code)
- (void)dealloc {
[user release];
[passwd release];
[super dealloc];
}
[super dealloc] 执行以下代码:
//(Abstract View Controller code)
- (void)dealloc {
[dbUtils release];
[loadingView release];
[super dealloc];
}
如果我在 iPhone Simulator 上模拟内存警告,则会引发以下异常:
2010-03-03 11:27:45.805 MyApp[71563:40b] Received simulated memory warning.
2010-03-03 11:27:45.808 MyApp[71563:40b] *** -[LoginViewController isViewLoaded]: message sent to deallocated instance 0x13b51b0
kill
quit
但是,如果我在 AbstractViewController 中注释 [super dealloc] 行,则不会引发异常并且我的应用程序仍在运行。
再次感谢您的帮助!