我一直在用这个代码创建我的uiwindow
UIMyWindow* win = [[UIMyWindow alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
UIMyWindow并不是什么特别的东西,它只有一个指向C++类的指针,它可以实现ObjutVEC的一些包装。
最近,我的应用程序在添加了一些与错误无关的代码行后开始崩溃。我添加的代码行只是分配一个C++对象,但是程序执行永远不会达到这一行。
有趣的是,我的代码在发行版中有效。
我唯一的猜测是我在一个完全不同的地方做了一些记忆腐蚀。我的问题是: 什么类型的内存损坏? 有没有一些好的做法来跟踪他们?
您肯定有一条消息发送到一个解除分配的对象。
您应该尝试使用instruments.app调试程序。它应该显示出潜在的内存问题。
还可以看看 启用NSZMN 环境变量。基本上,它会在释放对象的位置留下一个虚拟对象。当消息发送到该虚拟对象时,您将收到警报,允许您查看问题所在。