2012-09-08 35 views
0

我向醫療應用程序添加了一項新功能,允許用戶將電子郵件附件導入到應用程序的「文檔」文件夾中以供離線查看。在運行iOS 5.1的iPad 2或運行iOS 5.1的iPhone 4S上將電子郵件附件導入應用程序時效果很好。但是,在運行iOS 4.3的原始iPad上,導入附件無法打開應用程序(在顯示啓動畫面之前它會掛起)。崩潰日誌包含異常代碼0x8badf00d,並顯示應用程序在嘗試啓動20秒後退出。雖然保持iOS 4.x兼容性並不重要,但如果此問題可以解決,我希望繼續支持4.x。我想知道這個問題是否與iOS 4相關,或者與原始iPad的架構有關。任何想法都會非常感激,特別是因爲在模擬器上測試這個bug似乎是不可能的。值得注意的是,除了Apple的Reachability代碼,應用程序的啓動不需要任何網絡活動;典型的發射時間幾乎是瞬間的。謝謝。運行iOS 4.3的iPad上的0x8badf00d異常代碼,但不運行iOS 5.1的iPad或iPhone上的異常代碼

+1

嘗試暫停您的應用程序,例如嘗試啓動10秒並查看代碼被阻止的位置。或者,您可以使用Time Profiler工具或類似工具查看時間正在進行的時間。 –

+0

時間事件探查器顯示(NSFileManager directoryContentsAtPath:matchingExtension:options:keepExtension:error:]如果我暫時註銷重命名導入的附件文件並刪除附件導入過程創建的收件箱文件夾的代碼,則剩餘的收件箱文件夾的大小0字節,似乎在郵件應用程序退出和我的應用程序啓動之間出現錯誤,同樣,錯誤令人費解,因爲在運行iOS 5.x的設備上該過程非常快。此時,我懷疑iPad 1的處理器速度相對較慢是一個問題 – user183804

+0

經過代碼替換的試用和錯誤後,我發現該代碼發生掛起,將附件文件名從其url中轉換爲字符串(適用於iOS5,但不能iOS4):NSString * localizedName = nil; [url getResourceValue:&localizedName forKey:NSURLLocalizedNameKey error:NULL];非常感謝你的幫助和提醒我儀器的有用性。 – user183804

回答

1

如果導入新數據需要很長時間,則不應該在應用程序中導入附件:didFinishLaunching :.您應該立即向用戶顯示微調器或類似內容,然後在後臺線程上完成導入過程。

要檢查的另一件事是確保你不會有一個錯誤的無限循環,或其他東西一遍又一遍地調用directoryContentsAtPath:matchingExtension:options:keepExtension:error

1

操作系統說它啓動時間太長。減少你的發射時間。

這是看着你的應用程序,假設你的應用程序被掛起的看門狗定時器。現在,爲什麼最慢的設備是第一個出現這個問題並不奇怪。

相關問題