IOS应用程序在4.3中工作,但在主要的5.0上与SIGABRT崩溃

时间:2011-10-17 04:58:03

标签: iphone ios5 ios4 addsubview sigabrt

我今年夏天在iPhone 4上开发了一款适用于iOS 4.3的应用程序,而且运行良好。在我重新安置工作的时候,我把这个项目放在了后面。随着iOS 5的发布,我将我的Xcode和iOS SDK分别更新为4.2和5.0,我还买了一台新的iPod Touch,用于开发。

我的应用程序仍可在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?

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

-(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.navigationController pushViewController:tViewController animated:YES]推送此视图,那么为什么要使用[self.view addSubview:tViewController.view]将其添加到主视图中删除此行代码。