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