2011-04-28 111 views
0

我真的在撞上一個奇怪的問題。我的應用程序的一些用戶報告說,該應用程序無法啓動,但在顯示啓動屏幕2秒後崩潰。這隻發生在較舊的iPod 2G/iPhone 3G上。發生這種情況後,我試圖追蹤它。iPhone 3G/iPod 2G上的奇怪崩潰

調試代碼不會發生崩潰,但僅在發佈版本中發生。直到發生崩潰時,我的代碼才被執行。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    NSString *ipadXib = [NSString stringWithFormat:@"%@-iPad", [[self class] description]]; 
    return [super initWithNibName:ipadXib bundle:nibBundleOrNil]; 
    } else { 
    return [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    } 
} 
:有些UIViewControllers在我的AppDelegate初始化,無論序列我選擇這裏,他們第一次通過initWithNibName,這是所有控制器相同,處理正確的廈門國際銀行的加載一個通用的應用程序運行失敗之後

該代碼運行良好,但從這裏返回時,最終在UIKit(不是我的代碼)中出現了SIGBUS錯誤。我懷疑上面的代碼,因爲當我只是不重寫initWithNibName(這對iPhone版本來說沒問題)時,完整的代碼將貫穿始終。如果我在這裏調用[super ...],它也可以工作,但是我懷疑編譯器只是簡單地將它優化掉,具有相同的效果,而不會覆蓋它。由於InterfaceIdiom不是iPad,所以只使用相同的超級函數而不用改變參數,所以它應該是不容易的。 它適用於其他所有設備。沒有分析儀錯誤,無泄漏。它真的發生得這麼早,以至於幾乎沒有任何我的代碼,除了上述情況在崩潰發生時被調用。它發生在我控制器序列中的第一個控制器上。

任何想法?我完全卡在...

回答

0

一些調查研究後(在整個:-(夜)的情況下,我發現這是一個簡單的編譯器的問題與的XCode 4.0 LLVM。發行說明的XCode 4.0 .2顯示,具體來說這個編譯器bug(妨礙arm6架構上的堆棧幀)現在已經修復了。安裝4.0.2並重新編譯後,現在一切正常。 奇怪的是,我收到蘋果的郵件,我應該買iPad 2作爲復活節的禮物,或者現在有白色的iPhone可用,但沒有任何消息告訴開發人員2星期前這樣一個重要的解決方案正在發送給開發人員:-(