在加载视图时,由于未捕获的异常而终止应用程序

时间:2011-10-08 15:56:58

标签: iphone ios

我收到此错误,而我正在尝试加载另一个视图

  

* 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' -   [__NSCFType new1:]:无法识别的选择器发送到实例0x5c27950'

这里new1是一个按钮,按下时会加载一个视图。

这是new1

中的代码
-(IBAction) new1:(id) sender
{
 viewController = [[iTViewController alloc] initWithNibName:@"iTViewController" bundle:[NSBundle mainBundle]];
    [self.view addSubview:viewController.view];
}

注意:当我从fresh启动应用程序并按下new1按钮时,它可以完美地工作,但当我按下其他按钮加载其他视图时,当我返回到此视图并按下new1时,它会崩溃

1 个答案:

答案 0 :(得分:1)

错误* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '- [__NSCFType new1:]: unrecognized selector sent to instance 0x5c27950'可能不是来自- (IBAction)new1:(id)sender方法。这个错误说的是你试图在地址0x5c27950的任何对象上调用一个不存在的方法。以下是一些可能的解决方案:

在调试器中设置NSZombieEnabled,malloc堆栈日志记录和保护malloc。然后,当您的应用程序崩溃时,请在gdb comsole中输入:

(gdb) info malloc-history 0x5c27950

将0x5c27950替换为堆栈跟踪所引起崩溃的对象的地址,它将为您提供更有用的堆栈跟踪,并且应突出显示导致问题的确切行。

Check out this article for more info on NSZombieEnabled

This one for MallocStackLogging info

More info on guard malloc here


另外,您是否尝试过推动视图控制器(假设您使用的是导航控制器):

- (IBAction)new1:(id)sender {
    iTViewController *viewController = [[iTViewController alloc] initWithNibName:@"iTViewController" bundle:nil];
    [self.navigationController pushViewController:viewController animated:YES];
    [viewController release];
}

或者,如果您不使用导航控制器,则可以模态显示:

- (IBAction)new1:(id)sender {
    iTViewController *viewController = [[iTViewController alloc] initWithNibName:@"iTViewController" bundle:nil];
    [self presentModalViewController:viewController animated:YES];
    [viewController release];
}

另一种可能性是您正在调用[self new1:someButton];,但该方法未在您的头文件中声明,如下所示:

@interface MyViewController: UIViewController {
    ........
}

- (IBAction)new1:(id)sender;

@end