2011-07-16 93 views
1

我有一些代碼返回一個包含2個對象的結構(聲明爲id)。 當試圖使用其中一個對象時,我得到一個EXC_BAD_ACCESS並且應用程序崩潰。這隻發生在設備上(ipad)而不是在模擬器中。如何僅在設備上調試EXC_BAD_ACCESS

我已經將NSZombieEnabled設置爲YES,但是沒有信息寫入控制檯。 我不知道是否這是我在Xcode 4中使用工作區的問題,我的應用程序使用了一個項目,另一個使用我的應用程序構建庫。 EXC_BAD_ACCESS發生在第二個項目中,所以我不知道NSZombieEnabled是否會應用到第二個項目中?

我該如何解決這個問題?特別是因爲它只發生在設備上(甚至按照計劃在模擬器上運行),並且它在第二個項目中?

編輯:This is the method其中EXC_BAD_ACCESS發生時,上線62,上sortRange.lower -

回答

0

看來你的對象之一,你是在試圖訪問它之前會被自動釋放。由於iPad的內存少於運行它的計算機,因此它的發佈速度更快,因此無法使用。嘗試NSLog兩個對象就在你得到錯誤的行之前,並且看到其中一個是問題,並且追溯到它的原點並以某種方式保留它。也不要忘記在完成使用後釋放它。一些示例代碼會很有用。

+0

我NSLog對象後立即返回的方法,看似創建它們,我得到EXC_BAD_ACCESS。 –

+0

嘗試以'return [yourObject retain];'的形式返回對象。這有幫助嗎?如果是的話,在你完成之後不要忘記執行'[yourObject release]'。 –

+0

問題是該方法返回一個您不能保留的結構,但它包含2個對象。此外,返回結構的方法在NSPredicate的類別擴展中,並且在調試時似乎無法步入該方法。 –

1

NSZombieEnabled只能在模擬器上工作,而不能在設備上工作,所以它可能隱藏了問題。運行產品>分析(⇧⌘B)以獲取線索。不看代碼就更難說了。正如Mihai所說,您的對象可能已被釋放,這是EXC_BAD_ACCESS最常見的原因。

相關問題