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

Posted

技术标签:

【中文标题】由于未捕获的异常而终止应用程序,同时加载视图【英文标题】:Terminating app due to uncaught exception, while loading a view 【发布时间】:2011-10-08 15:56:58 【问题描述】:

我在尝试加载另一个视图时遇到此错误

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

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

这是new1里面的代码

-(IBAction) new1:(id) sender

 viewController = [[iTViewController alloc] initWithNibName:@"iTViewController" bundle:[NSBundle mainBundle]];
    [self.view addSubview:viewController.view];

注意:当我从新启动应用程序并按 new1 按钮时,它可以正常工作,但是当我按加载其他视图的其他按钮时,当我返回此视图并按 new1 时,它会崩溃

【问题讨论】:

【参考方案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

【讨论】:

推送 viewcontroler 显示错误,我没有使用导航控制器。我已经在标题中声明了该方法。将尝试 NSZombieEnabled 方法并将在此处更新

以上是关于由于未捕获的异常而终止应用程序,同时加载视图的主要内容,如果未能解决你的问题,请参考以下文章

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序

** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“应用程序试图在目标上呈现一个 nil 模态视图控制器

由于名称为“OverlayView”的未捕获异常“NSInternalInconsistencyException”而终止应用程序

由于未捕获的异常“NSUnknownKeyException”而终止应用程序此类不符合键 .img 的键值编码

由于未捕获的异常而终止应用程序,原因:“尝试从第 1 部分删除第 3 行,更新前仅包含 0 行”

应用程序因 - 未捕获的异常“NSGenericException”而终止,