2011-12-20 53 views
1

我今天遇到了一個奇怪的錯誤與我正在處理的應用程序。 問題出在目錄模塊上。在每個頁面上方都有一個小的黑色區域,因爲頁面沒有填滿100%的屏幕。點擊該區域會導致崩潰。奇怪的與CALayer相關的崩潰日誌

我崩潰日誌看起來是這樣的:

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Codes: KERN_PROTECTION_FAILURE at 0x2fd00fec 
Crashed Thread: 0 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 QuartzCore      0x35d812ac CA::Transaction::ensure_compat() + 0 
1 QuartzCore      0x35da2648 CALayerMapGeometry_(CALayer*, CALayer*, void (*)(void*, CA::Mat4<double> const&), void (*)(void*, CA::Mat4<double> const&), void*) + 28 
2 QuartzCore      0x35da25f8 -[CALayer convertPoint:fromLayer:] + 52 
3 UIKit       0x32457018 -[UIView(Geometry) convertPoint:fromView:] + 68 
4 UIKit       0x32456d40 -[UIView(Geometry) hitTest:withEvent:] + 172 
5 UIKit       0x32456d50 -[UIView(Geometry) hitTest:withEvent:] + 188 
(...)repeat the line above^ until it reached 511 
511 UIKit       0x32456d50 -[UIView(Geometry) hitTest:withEvent:] + 188 

更時,Xcode結束後不久墜毀。 調試導航顯示我更加奇怪的事情:http://i43.tinypic.com/5txnq0.png,然後用一個巨大的名單不斷,喜歡這裏:http://i41.tinypic.com/2h81ctw.png

我真的不知道從哪裏開始說起... 目錄模塊是老井測試過,而這樣的事情從來沒有發生過。 我知道有很多變數和可能會影響應用程序的東西,但是如果任何人都可以在這裏發現一點點亮光,我會非常感謝 正如我所說,我甚至不知道如何開始接近這個問題,它看起來不像你常規的「訪問一個釋放對象」,「內存泄漏」或我迄今遇到的其他問題

回答

10

你有一個無限的遞歸某處。你是否在某處覆蓋-[UIView hitTest:withEvent:]?那將是一個開始的好地方。

+1

無限遞歸可能更精確地描述了這裏出現的問題,但是,當我以錯誤的方式覆蓋事物時,我已經看到了這種確切的行爲。當你需要一個'[超級的東西]'時,確保你沒有使用'[自己的東西]'。 – 2011-12-20 18:17:27

+0

是的,遞歸更合適......修復。 – 2011-12-20 19:02:52

+0

不,「hitTest:withEvent」沒有在應用程序的任何地方使用,但我確實有一些CALayer實例需要檢查。無限遞歸聽起來似乎合理,我將首先檢查應用程序中的所有迭代。謝謝你的提示,夥計! – BBog 2011-12-21 07:30:25