1

我有一个 iPhone 应用程序在 appstore 中存在了一个月(从 2011 年 11 月到现在)。7 月 17 日,我通过了 iTunes 的更新,今天他们拒绝了。他们说它在 iPad 上运行时只显示黑屏。我对其进行了测试,确实,闪屏图片出现了,几秒钟后它不是被应用程序的第一个屏幕取代,而是被黑屏取代。(iPad 模拟器以及物理 iPad)。但是 Xcodes 控制台中没有消息。

所以,我在我的 iPhone 上启动了这个应用程序,我在 7 月 17 日之前加载了它,并在发布之前测试了这个应用程序:它运行得很好。

然后我确实从 iPhone-Simulator 上的 Xcode 启动它:Splash-Picture,然后是黑屏,但控制台中没有消息。

所以我连接了我的 iPhone 并将新编译的版本加载到我的 iPhone:黑屏!!!

为了了解更多信息,我在 main.m 和 appDelegate.m 的几个位置将这一行插入到我的代码中:

NSLog(@"%s Line %d",__PRETTY_FUNCTION__,__LINE__);

main.m 的内容:

//(some comment-lines)
#import <UIKit/UIKit.h>

int main(int argc, char *argv[])
{
    NSLog(@"%s Line %d",__PRETTY_FUNCTION__,__LINE__); //this is line 13
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSLog(@"%s Line %d",__PRETTY_FUNCTION__,__LINE__); //this is line 15
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    NSLog(@"%s Line %d",__PRETTY_FUNCTION__,__LINE__); //this is line 17
    [pool release];
    NSLog(@"%s Line %d",__PRETTY_FUNCTION__,__LINE__); //this is line 19
    return retVal;
}

我还在 appDelegate.m 中输入了这一行:

- (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
    NSLog(@"%s Line %d",__PRETTY_FUNCTION__,__LINE__);
    // some more code
}

当我运行应用程序时,Xcodes 控制台中只显示这两行:

2012-07-28 11:03:29.548 nulowi[4072:c07] int main(int, char **) Line 13
2012-07-28 11:03:29.553 nulowi[4072:c07] int main(int, char **) Line 15

所以看起来好像 main.m 中的 main 被执行并且 Autoreleasepool 被创建了。但是,在 main.m 中调用 UIApplicationMain 之后,在应用程序委托中调用 application:didFinishLaunchingWithOptions: 之前,一定发生了一些事情,我不知道这可能是什么。

也许这与我的 MacBook Pro 上从 Mac OS X 10.7 (Lion) 升级到 OS X 10.8 (Mountain Lion) 有关?当我在 7 月 17 日从 10.7 版的 MacBook 上发布经过测试的应用程序时,一切都很好。昨天我安装了从 10.7 到 10.8 的更新。

现在,当尝试从 10.8 版运行时,将不会调用 application:didFinishLaunchingWithOptions:。

4

1 回答 1

1

您是否会尝试彻底清理您的项目,直至删除构建文件夹的内容?然后重建,看看会发生什么......

您提到的内容可能存在一些问题,但只是在 OS/Xcode 版本之间“混淆”的意义上......

您可以在 Xcode 首选项中找到构建文件的位置(见图)。

在此处输入图像描述

如果这不起作用,请尝试将调用 UIApplicationMain 的方式更改为:

    int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

指定您的应用程序委托的真实姓名。

于 2012-07-28T10:33:28.320 回答