2013-06-20 88 views
0

我有一個本機iOS應用程序,通過將ViewControllers推到根控制器上來創建視圖層次結構。UIView突然消失

偶爾我發現應用程序突然消失。它看起來沒有崩潰,因爲App仍然存在於iPad任務欄中。但似乎有一個或多個視圖會卸載,將用戶放回主頁。該應用程序仍然可以在iPad任務欄中看到,並且可以通過點擊任務欄中的圖標重新打開。

UIViews能不能像這樣消失?我怎麼去調試呢?

非常感謝。

+0

聽起來像應用程序正在崩潰。 Xcode在運行時報告什麼? – Liam

+0

不會崩潰的應用程序從任務欄中消失嗎? – whatdoesitallmean

+1

不是。應用程序的圖標在崩潰後仍保留在多任務欄中。 – Liam

回答

0

iOS應用無法隱藏或最小化,所以如果你正在使用你的應用程序,突然你在所有的應用程序列在主頁屏幕上,那麼你的應用程序崩潰。

如果你使用Xcode的安裝和測試您的應用程序,你可以去Organizer->設備,並選擇您的設備和檢查設備的日誌,看看發生了什麼事時,你的應用程序崩潰。

這當然,如果當應用程序崩潰沒有顯示在控制檯/調試區域。

如果您的應用程序中沒有使用ARC,並且在應用程序崩潰時沒有在調試區域顯示任何內容,那麼我敢打賭是低內存崩潰,這種崩潰通常不會給時間到Xcode記錄錯誤,但您可以在設備日誌中驗證此錯誤。如果是這樣,我會建議在你的應用中切換和使用ARC。

+0

但是,如果它崩潰,您不希望它從任務欄中丟失,您可以在屏幕底部打開嗎? – whatdoesitallmean

+0

不是。應用程序的圖標在崩潰後仍保留在「多任務」欄中。 – Liam

+2

@whatdoesitallmean不,它位於任務欄中,如果您選擇它,只需重新啓動。你的應用崩潰了。 –

1

它似乎沒有崩潰,因爲App仍然存在於iPad任務欄中。

那真的不能告訴你任何東西。您描述的「任務欄」不是當前正在運行的進程列表;這是最近使用過的應用程序列表。列出的應用程序現在可能運行,也可能不運行。

要告訴我們,如果你的應用程序崩潰或沒有,在Xcode組織者選擇設備,並查看設備日誌列表。如果您的應用程序崩潰,則最新的日誌文件將與您的應用程序名稱列在「處理」列下。選擇日誌,並看一看 - 你可能會看到:

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Codes: KERN_INVALID_ADDRESS at 0x80938733 
Crashed Thread: 0 

日誌的休息會給你什麼每個線程在崩潰的時候做一些信息。

它也可能發生最近的日誌(S)是不是從你的應用程序,但過程和類型欄目下,而不是列爲Unknown/Unknown。日誌將只包含進程列表和每個正在使用的內存頁數。查找列表中的您的應用程序,你會發現這樣一行:

MyApplication <23b...9af> 168389 168389 [per-process-limit] (frontmost) (resume) 

如果你看到,你的應用程序沒有崩潰;它被操作系統殺死,因爲它使用了太多的內存。現在是開始使用Instruments來分析應用內存使用情況並尋找非常大的分配和/​​或內存泄漏的好時機。