0

我一直在使用这段代码来创建我的 UIWindow

UIMyWindow* win = [[UIMyWindow alloc] 
                   initWithFrame:[[UIScreen mainScreen] applicationFrame]];

UIMyWindow 没有什么特别之处,它只是有一个指向 C++ 类的指针,该类对 ObjectiveC 进行了一些包装。

最近我的应用程序在添加了一些不需要对错误做任何事情的代码行后开始崩溃。我添加的代码行只是分配了一个 C++ 对象,但程序执行从未到达这一行。

有趣的是,我的代码在 Release 中工作。

我唯一的猜测是我在一个完全不同的地方造成了一些内存损坏。我的问题是:可能是什么类型的内存损坏?是否有一些好的做法来追踪它们?

4

1 回答 1

1

您肯定有一条消息发送到已释放的对象。

您应该尝试使用 Instruments.app 调试您的程序。它应该向您显示潜在的内存问题。

另请查看NSZombieEnabled环境变量。基本上,它会在释放对象的位置留下一个虚拟对象。当消息发送到该虚拟对象时,您会收到警报,让您查看问题所在。

于 2010-06-03T08:20:08.240 回答