【问题标题】:application:didFinishLaunchingWithOptions: is not executed (maybe Mountain Lion issue?)应用程序:didFinishLaunchingWithOptions:未执行(可能是山狮问题?)
【发布时间】:2012-07-28 09:45:23
【问题描述】:

我有一个 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:。

【问题讨论】:

    标签: objective-c ios macos osx-mountain-lion


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 我做了:在 Xcode 中:清理(shift-cmd-K)。然后我退出了 Xcode。我击落了我的 MacBook。几秒钟后我确实打开了它,等了 1 分钟(只是为了舒尔)并启动了 Xcode。我打开我的应用程序,再次进行清洁(也只是为了舒尔),然后在 iPhone-Simulator 上启动应用程序:闪屏弹出并在 2 秒后消失,留下黑屏。控制台日志显示了相同的两行(只是时间戳不同)。未调用应用程序的代表! - 那么请问您要删除的构建文件夹在哪里?
    • 我很遗憾听到这个消息...我添加了一个快照,您可以在其中找到构建文件的位置;希望你有一些运气。
    • 我尝试了你提出的任何建议。没有任何帮助。因此,我从头开始创建了一个新应用程序,并将旧的源代码文件逐个文件插入到新应用程序中。在那次我采用了 ARC 的代码。然后我确实编译了它,它运行完美,没有任何错误。只有一件事不同:视图控制器的基本视图之前确实有白色背景。在新版本中它是黑色的。我必须将此视图背景颜色明确设置为白色,这在旧版本中是不需要的。
    • 重写 UIApplicationMain 为我解决了类似的问题。
    猜你喜欢
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2015-07-26
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    相关资源
    最近更新 更多