我一直在使用此代码创建我的UIWindow
UIMyWindow* win = [[UIMyWindow alloc]
initWithFrame:[[UIScreen mainScreen] applicationFrame]];
UIMyWindow并不是什么特别的东西它只有一个指向C ++类的指针,它会对ObjectiveC进行一些包装。
最近我的应用程序在添加了一些不需要对错误做任何事情的代码之后就开始崩溃了。我添加的代码行只是分配一个C ++对象,但程序执行永远不会到达这一行。
有趣的是我的代码在Release中有效。
我唯一的猜测是,我在一个完全不同的地方造成了一些内存损坏。我的问题是: 什么类型的内存损坏可以? 是否有一些良好的做法可以追踪它们?
答案 0 :(得分:1)
您肯定有一条消息要发送到已解除分配的对象。
您应该尝试使用Instruments.app调试程序。它应该向您展示潜在的记忆问题。
另请参阅 NSZombieEnabled 环境变量。基本上,它在解除分配的对象的位置留下一个虚拟对象。当消息发送到该虚拟对象时,您将收到警报,以便您查看问题所在的位置。