2010-11-24 141 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

相關問題