2010-11-24 107 views
3

因为我一直在使用一个SoundManager类中的类,我通过这个博客帖子的评论中发现的应用在过去的几个星期后: http://www.gehacktes.net/2009/03/iphone-programming-part-6-multiple-sounds-with-openal/应用显示白色屏幕上启动升级至iOS 4.2

链接SoundManager和测试人员应用程序在David Evans的评论中提供。我不允许提供第二个链接,所以我会提及他链接到的ZIP文件的名称: SoundTester.zip

我对此代码非常满意,直到iOS 4.2发布。在相应地更新我的iPad和Xcode之后,使用SoundManager类的应用程序仅显示带有标题的导航栏。屏幕的其余部分是白色的。这不是iPad的具体行为。我已经看到iPhone4和iPhone 3G升级到iOS 4.2的情况相同。

在模拟器中运行应用程序时,我得到了相同的结果。问题是我在控制台窗口中没有收到错误消息,也没有编译和编译错误。几个月前开始使用iPhone SDK的iPhone开发人员非常沮丧,也很难修复。

有没有人有什么线索可能已经打破,如何解决呢?任何帮助表示赞赏!

回答

1

有人请拍我......

就发现了这个问题,从一段代码我从iPhone开发的食谱写下来帮助。

问题是不是SoundManager类但在应用程序(也可正常工作,幸运的!):didFinishLaunchingWithOptions:方法中在App Delegate类。

下面是导致iOS 4.2的问题的代码,但在iOS 3.2仍然有效:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

// Create a Navigation Controller on the fly. 
// Use the View Controller as root view controller. 
viewController.title = @"ThreeSounds"; 

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:viewController]; 
nav.navigationBar.barStyle = UIBarStyleBlack; 

// Add the view controller's view to the window and display. 
[window addSubview:nav.view]; 
[nav release]; 

[window makeKeyAndVisible]; 

return YES; 
} 

解决办法:删除这行:[NAV释放。 由于某些原因,释放导航控制器在iOS 3.2中不是问题。 在iOS 4.2中,屏幕变白。

我发现这个方法是问题,因为它是已执行的最后一个方法。这反过来,我发现通过将这段代码添加到我的项目中的每个类:

-(BOOL) respondsToSelector:(SEL)aSelector { 
printf("SELECTOR: %s\n", [NSStringFromSelector(aSelector) UTF8String]); 
return [super respondsToSelector:aSelector]; 
} 

这段代码记录了所有调用的方法。

1

我用下面的代码 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法

window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
if (!window) 
{ 
    [self release]; 
    return 0; 
} 

这种方法会造成白色画面时,我开始了我的应用程序。在3.2/4.0 SDK中可以。在SDK 4.3中它导致了这个问题。只要评论或删除此代码,如果你有。

1

我有同样的问题。问题是重复的UIWindow。

+0

谢谢一堆。这指出我有权修复一个错误的错误。 – braden 2013-09-04 14:55:47

相关问题