Я имею дело с методами viewDidUnload и dealloc и обнаружил проблему при вызове [super dealloc]; в родительском контроллере представления.
У меня есть много контроллеров представления с пользовательским кодом, который я поместил снаружи в родительский контроллер представления. Итак, при определении моих контроллеров представления я установил ссылку на суперкласс:
@interface LoginViewController : AbstractViewController
Затем в методе dealloc я вызываю метод dealloc AbstractViewController:
//(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
Однако, если я прокомментирую строку [super dealloc] в AbstractViewController, исключение не будет выдано, и мое приложение все еще будет работать.
Еще раз спасибо за вашу помощь!