代码之家  ›  专栏  ›  技术社区  ›  Adam Grant

iPhone版本中的main.m错误

  •  0
  • Adam Grant  · 技术社区  · 14 年前

    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。你也可以下载我的完整项目浏览代码,如果你愿意。项目名为“iHouse.zip”

    http://drop.io/6lhubkb

    否则,任何其他特定的代码任何人都想看到,我很高兴粘贴在这里的要求。否则,我就难倒了。

    2 回复  |  直到 14 年前
        1
  •  0
  •   iwasrobbed    14 年前

    这意味着您可能忘记在应用程序启动后连接要加载的窗口或视图。除非你修改了 main.m 文件(你不需要),它应该是刚刚好。

        2
  •  1
  •   Adam Grant    14 年前

    解决了…算是吧。堆栈中的“31”奇怪地指的是main.m开头被注释掉的苹果免责声明中的一行。我去掉了这个,那个问题就消失了。还是不知道当初为什么突然成了问题。

    我将代码与另一个应用程序并排进行了比较,发现我在AppDelegate中注释掉了applicationdifinishloading的一个关键部分,正如@iwasrobed所建议的那样。

    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];
    

    谢谢大家的帮助。我花了一整天的时间才发现我犯了一个愚蠢的错误,但我猜你活着,你也学到了。