我遇到內存問題。我收到一條錯誤消息「線程1:EXC_BAD_ACCESS(code = 1,address = ...)該錯誤是難以捉摸的,顯然取決於時間。在我的iPad mini上,它平均每次平均約3分鐘,在我的iPhone SE平均10分鐘,並在模擬器上運行20小時而不會崩潰。內存錯誤的可能原因
我沒有成功地使用殭屍探測器。 (請參閱下文,瞭解我的經驗。)因此,我正在試着用細梳梳理我的代碼,以查看可能導致崩潰的原因。什麼是可能導致分配錯誤的問題?
我的應用程序是多線程的。它從麥克風發出聲音,對其進行處理,並不斷用顯示的處理結果更新顯示。它是用Swift 3編寫的,所以我沒有做任何明確的malloc或釋放。
我正在尋找可能導致錯誤的代碼中的地方。我最近看到的兩件事是弱引用和不安全的指針。是否還有其他常見編程錯誤可能會讓我感到不安?我們已經忽略了這個警告,並且試圖用我的我的模擬器來試試這個警告。 iPad mini,我無法讓它崩潰,一切都以大約1/10的速度運行,當我暫停錄製時,我的OSX機器也變得呆滯,一次顯示幾分鐘的旋轉「等待」光標。總的內存分配是上下調整的,但是保持在限制範圍內,所以沒有大的內存泄漏,我也在模擬器上運行了殭屍工具,它同樣很低速,但仍然沒有崩潰。)
你是否能夠在調試器中捕捉到崩潰?有堆棧嗎?你有沒有將「self」捕獲爲「無主」的塊? –
是的,它顯示在調試器中。這裏是它的代碼吧 'let loByte = bytes [pos]' 'let hiByte = bytes [pos + 1] // break here' 實際值有所不同,但這最後一次pos是630.沒有什麼不尋常的關於字節或字節的第630和第631個元素的調試器。 –