Летом я разрабатывал приложение для iOS 4.3 на своем iPhone 4, и все работало хорошо. Я отложил этот проект на задний план, пока переезжал. С выпуском iOS 5 я обновил свой Xcode и iOS SDK до 4.2 и 5.0 соответственно, а также купил новый iPod Touch под управлением 5.0 для разработки.
Мое приложение по-прежнему работает в симуляторе iPhone 4.3 (к сожалению, у меня больше нет возможности тестировать iPhone 4), но оно постоянно падает на симуляторе iPhone 5.0, а также на iPod Touch.
Ошибка возникает, когда я пытаюсь загрузить подпредставление и переходит в main и сообщает, что происходит сбой с помощью SIGABRT. Ниже приведен фрагмент кода, где происходит сбой:
-(IBAction) showView:(id) sender{
if (self.tViewController == nil) {
self.tViewController = [[TViewController alloc] init];
}
[self.navigationController pushViewController:tViewController animated:YES];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:.75];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
forView:self.view
cache:YES];
[self.view addSubview:tViewController.view];
[UIView commitAnimations];
}
Когда я иду и достигаю этой строки:
[self.view addSubview:tViewController.view];
Вылетает и переходит на main.m:
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
И показывает 'SIGABRT', получаемый по этой строке:
int retVal = UIApplicationMain(argc, argv, nil, nil);
Я читал, что ошибка возникает из-за того, что что-то было выпущено дважды. Но в моей функции «showView» я не вижу, где я мог бы это сделать. Если только метод addSubview не делает что-то, о чем я не знаю.
Кроме того, почему эта ошибка происходит в 5.0, а не в 4.3?
Любая помощь приветствуется.