2010-06-22 54 views
0

當我使用儀器在模擬器中運行我的應用程序時,儀器報告了一些泄漏。所報告的泄漏對我來說沒有多大意義,所以我想嘗試使用該設備。但是當我從樂器開始的時候,它沒有響應(它沒有反應觸摸,我只能按回家放棄),或者甚至沒有啓動只是在iphone上可見的黑屏。沒有文書我的應用程序工作正常。有人知道什麼是錯的嗎?從儀器運行時程序無法運行

UPDATE1:
我有一個UISearchBar在附加到uiSearchDisplayController的應用程序,如果我點擊它,程序凍結。我只能關閉它。它應該在點擊時顯示一個自動完成表格。如果從模擬器運行,它會在我點擊搜索欄時泄漏一些內存,但只是第一次,並且它來自nsurlconnection alloc,它是在didFailWithError和connectionDidFinishLoading委託方法中發佈的。 (我已經有一個關於此問題的單獨的未答覆的問題。)

UPDATE2:還有一些其他泄漏報告,但唯一的代碼來自我的程序是UIApplicationMain(argc, argv, nil, nil);,這對追蹤它沒有什麼幫助。

回答

1

有沒有這樣的事情,只泄露出現在模擬器中。如果它在模擬器中泄漏,它會泄漏到設備上,討論結束。

您偶爾會看到由工具插入的鉤子與代碼中有問題的部分進行交互所導致的任何分析工具崩潰。很可能你所遇到的是某種失控的循環。

我會建議在解決設備問題之前解決模擬器上的問題。

+0

因此,直到我解決了模擬器上的所有泄漏之前,在iphone上使用儀器是不可能的?沒有任何ocasional崩潰,它使用儀器和iPhone時,它不工作,它只適用於使用儀器和模擬器。 – 2010-06-23 07:04:45

+0

什麼是失控循環? – 2010-06-23 07:21:13

+0

碰撞儀器是不尋常的,但它確實發生。您通常不必首先在模擬器中修復。但是,這樣做通常更容易。模擬器具有更多的內存,並且易於獲取鉤子。如果模擬器中不起作用,它將無法在設備上工作,所以爲什麼要麻煩?一個失控的循環是由自引用導致的無限遞歸引起的,即一個對象,對象圖,方法,函數等,它們在一秒鐘內通常會自動調用數萬次。儀器同樣必須產生數千個鉤子才能跟蹤並鎖定。 – TechZen 2010-06-23 13:00:23