我真的在撞上一個奇怪的問題。我的應用程序的一些用戶報告說,該應用程序無法啓動,但在顯示啓動屏幕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,所以只使用相同的超級函數而不用改變參數,所以它應該是不容易的。 它適用於其他所有設備。沒有分析儀錯誤,無泄漏。它真的發生得這麼早,以至於幾乎沒有任何我的代碼,除了上述情況在崩潰發生時被調用。它發生在我控制器序列中的第一個控制器上。
任何想法?我完全卡在...