由于未捕获的异常而终止应用程序,同时加载视图
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 的键值编码