运行程序时没有错误提示,出现如下信息
项目(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的设置