私は viewDidUnload と dealloc メソッドを扱っていますが、[super dealloc] を呼び出すときに問題が発生しました。親View Controllerで。
親View Controllerの外側に配置したカスタムコードを備えたView Controllerがたくさんあります。したがって、View Controller を定義するときに、スーパー クラスへの参照を設定します。
@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 シミュレーターでメモリ警告をシミュレートすると、次の例外がスローされます。
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] 行にコメントを付けると、例外はスローされず、アプリは引き続き実行されます。
もう一度助けてくれてありがとう!