運行程序時沒有錯誤提示,出現如下信息
項目(702,0x198497310) malloc: stack logs being written into /private/var/mobile/Containers/Data/Application/461E4C49-CF65-49F6-8B76-AF30533D5390/tmp/stack-logs.702.100098000.TableDelete.3JtuAw.index
項目(702,0x198497310) malloc: recording malloc and VM allocation stacks to disk using standard recorder
項目(702,0x198497310) malloc: process 668 no longer exists, stack logs deleted from /private/var/mobile/Containers/Data/Application/461E4C49-CF65-49F6-8B76-AF30533D5390/tmp/stack-logs.668.1000a4000.TableDelete.CtzS13.index
將整個項目的源代碼複製到別一個新建的項目中,再運行就沒有問題了!
另:
在原來的項目中,使用debug模式啓動項目就會出上面的錯誤,但不以debug模式啓動時就能正常啓動....
解決方法:
打開edit scheme ,在run模式下 取消Logging下的malloc stack選項即可(注:如果memory management下的enable guard malloc選項,則程序崩潰)
NSZombieEnabled選項打開後,crash時能打印出具體的對象地址;Malloc
Stack選項打開後,可以通過命令行打印出程序分配與釋放空間的歷史。兩者相互結合,往往就能發現到底是什麼對象被意外釋放了。
另附上 xcode EXC_BAD_ACCESS調試
1.進入edit scheme 設置頁面
2.在diagnostics面板中enable zombie objects和malloc stack選項
3.把xcode默認的debugger設置爲GDB
4.當出現message sent
to deallocated instance ***,鍵入info malloc-history ***
5.根據堆棧信息,定位到內存泄露的代碼
截圖如下:
我猜你是打開了Run菜單下的Enable Guard Malloc的設置 |