2014-01-29 94 views
5

有沒有任何機構知道我需要檢查一段時間後應用程序是否凍結?我的意思是,我可以在iPhone屏幕上看到該應用程序,但沒有視圖響應。我的iOS應用程序凍結,但沒有出現錯誤

我做了一些谷歌,我發現,我已經阻止了主線程莫名其妙。

但我的問題是如何確定哪個方法導致主線程阻塞?有什麼方法可以識別?

+0

在主線程上運行你的進程... – IronManGill

+0

我的項目中有很多進程在後臺線程上運行,如下載圖像,活動指示器動畫,加載tableview等等,我應該在main線程? – Krunal

+1

也許描述更多你的應用程序正在做什麼,顯示一些你正在執行的代碼,當你凍結 –

回答

4

一般來說,強烈建議在主線程中的所有動畫方法和接口操縱執行,並把像從你的服務器等下載數據的後臺任務...

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    //here everything you want to perform in background 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     //call back to main queue to update user interface 
    }); 
}); 

來源:http://www.raywenderlich.com/31166/25-ios-app-performance-tips-tricks

3

從發生凍結的地方設置一個斷點並找出哪條線路導致該斷點。

機會可能是,加載大量數據,禁用控件,主線程中的超載,只需找出使用斷點發生的位置並根據該錯誤糾正。

15

啓動您的應用程序並等待它凍結。然後按下Xcode中的「暫停」按鈕。左側窗格應顯示當前正在運行的方法。

+0

這是針對這種「無錯誤」崩潰/鎖定的最佳解決方案。 – CodePlumber

相關問題