从未想过我在编译时会在此文件中出现错误,但在调试模式下运行我的应用程序后,该应用会停止并突出显示该行
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
在我的main.m文件中作为断点。当我在正常模式下运行时,应用程序只显示黑屏。这是什么意思?
(更新)
好的,到目前为止还没有任何工作。这是失败的代码:
#import <UIKit/UIKit.h>
int main(int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
堆栈说
Pending breakpoint 1 - ""main.m":31" resolved
奇怪的是,我删除了上述问题之前的视图控制器,仍然没有警告或错误,我仍然在调试模式下停止应用程序或返回黑屏并在正常运行模式下冻结。
这是一个包含我在IB中的两个NIB中的视图和窗口排列的两个屏幕截图。如果您愿意,您也可以下载我的完整项目来浏览代码。该项目名为“iHouse.zip”
否则,任何其他人都希望看到的其他特定代码,我很乐意根据要求将其粘贴在此处。否则,我很难过。
感谢。
答案 0 :(得分:1)
解决了....等等。堆栈中的“31”奇怪地指的是在main.m开头的注释掉的苹果免责声明中的随机行。我删除了这个,问题就消失了。仍然不确定为什么它首先突然成为一个问题。
我将代码与另一个应用程序并排比较,发现我已经在AppDelegate中注释了applicationDidFinishLoading的一个关键部分,就像@IWasRobbed建议的那样。
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
[window addSubview:splitViewController.view];
[window makeKeyAndVisible];
}
else
{
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
}
因为我还没有准备好使这个应用程序具有普遍性,所以我对此部分进行了评论。在这样做的过程中,我拿出关键部分告诉应用程序首先要加载什么
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
感谢大家的帮助。我花了一整天的时间来找到一个愚蠢的错误,但你活了,你就知道了。
答案 1 :(得分:0)
这意味着您可能忘记在应用程序启动后挂起窗口或视图以加载。除非您修改了main.m
文件(您不应该这样做),否则应该没问题。