为什么添加视图会导致程序崩溃?

时间:2012-01-23 17:51:00

标签: iphone objective-c xcode

为了弄清楚如何将代码从一个程序集成到另一个程序中,我已经将3个类转储到一个空的开放GLES游戏项目中。这些类是PageControl apple示例中的ContentController,PhoneContentController和MyViewController。

然后我从PageControl app委托文件中获取了这个初始化代码,并将其放入游戏项目appDelegate中。

 contentController = [[PhoneContentController alloc] init];
 [self.window addSubview:contentController.view];

使用必要的Synthesis / protocols / includes和声明它们在PageControl中的位置。

我在main的这一行得到了一个SIGABRT错误:

return UIApplicationMain(argc, argv, nil, NSStringFromClass([IntegrationTestAppDelegate class]));

我添加了一个通用断点,它指向MyViewController.m中的这一行

newsItem = [[UITextView alloc] initWithFrame:self.view.frame];

我猜这与self.view.frame有关......?也许?那么,这里有一些层次结构类型的问题吗?

编辑 - 在进一步检查时,似乎确实与观点有关...虽然我不太清楚什么。这可能与外来的nib文件有关吗?

编辑 - 更多细节:从myViewController的init调用newsItem,它是从手机内容控制器中的方法调用的,而后者又在appdelegate中使用以下行调用:

contentController = [[PhoneContentController alloc] init];

1 个答案:

答案 0 :(得分:0)

在什么时候:

newsItem = [[UITextView alloc] initWithFrame:self.view.frame];

正在运行?尤其是在笔尖加载完成后吗?如果没有,并且在Interface Builder中设置了self.view,那么self.view将是nil,而self.view.frame将是垃圾。 (-initWithFrame:需要一个CGRect结构,因此在这种情况下,nil指针是完全不可接受的,与期望Objective-C对象的方法不同。)