为了弄清楚如何将代码从一个程序集成到另一个程序中,我已经将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];
答案 0 :(得分:0)
在什么时候:
newsItem = [[UITextView alloc] initWithFrame:self.view.frame];
正在运行?尤其是在笔尖加载完成后吗?如果没有,并且在Interface Builder中设置了self.view,那么self.view将是nil,而self.view.frame将是垃圾。 (-initWithFrame:需要一个CGRect结构,因此在这种情况下,nil指针是完全不可接受的,与期望Objective-C对象的方法不同。)