Возможно, вы отпускаете контроллер не в том месте. Это может быть причиной того, что ваш [super dealloc] в вашем ViewController.m дает сбой
Вы не должны вызывать [viewController release], пока не хотите, чтобы этот контроллер умер. Например, если у вас есть приложение с только viewcontroller, вы не должны выпускать его, пока приложение не завершится. Это потому, что этот контроллер должен оставаться в живых все время, чтобы контролировать вид. Если у вас в ApplicationDelegate что-то вроде этого, это приведет к сбою:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
UIViewController *controller = [[UIViewController alloc] init];
[window addSubview:controller.view];
[controller release]; //this will crash
}
Вместо этого вы должны поместить ваш viewcontroller в заголовочный файл (.h) и освободить его в методе dealloc:
- (void)dealloc {
[controller release];
[window release];
[super dealloc];
}
Надеюсь, это поможет.