在myAppDelegate.m中:
MainViewController *mainViewController = [ [MainViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc]
initWithRootViewController:mainViewController];
[navController setNavigationBarHidden:YES];
[[self window] setRootViewController:navController];
在MainViewController.m中没什么特别的,只有一个动作绑定到一个按钮:
- (IBAction)go:(id)sender {
if (!whereamiViewController)
{
whereamiViewController = [[WhereamiViewController alloc] init];
}
[[self navigationController] pushViewController:whereamiViewController animated:YES];
}
在WhereamiViewController.m中只是一个按钮,用于在UINavigationViewController中显示另一个屏幕:
-(IBAction)showList:(id)sender
{
PointsViewController *container = [[PointsViewController alloc] init];
[[self navigationController] pushViewController:container animated:YES];
}
和
@interface PointsViewController : UITableViewController
@end
一切都很好。但当我登陆最后一个屏幕时,PointsViewController,我回到了WhereamiView,应用程序冻结,Xcode在CoureFoundation,CFHas显示陷阱。
现在,我知道Objective-C不是php,但这确实是一个简单的例子:我错过了什么?有一种方法可以调试问题吗?
调试器说:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '- [__NSCFType _forgetDependentConstraint:]: unrecognized selector sent to instance
今天早上我在模拟器内运行应用程序,没有崩溃!这怎么可能?如果我在iPhone崩溃中运行,在模拟器中没有崩溃。
答案 0 :(得分:0)
我并没有真正看到问题所在,因为它发生在您发布的代码之外。我可能会遗漏一些东西,但如果你回到whereamiViewController
时应用程序崩溃了,你怎么回去?我没有看到它在这里详述的地方。
对于这样的navigationControllers
,您可以推送(添加)或弹出(删除)viewControllers
来上下移动navcontroller树。正是在这一点上,应用程序似乎崩溃,你可能值得发布这个怎么样?你在哪里弹出容器(PointsViewController *)。
根据您发布的代码,我怀疑您可能会尝试通过重新推送它来回到whereamiViewController
。
答案 1 :(得分:0)
你的Xcode说什么?你能提供调试器的内容吗? 这对于追踪出现问题更有帮助。
答案 2 :(得分:0)
[部分解决] 这很奇怪:在调试所有内容并删除所有可疑声明后,没有任何改进。同样崩溃SIGABRT。重启iPhone和Mac后,一切都很好!