-1

我有一个不使用 ARC 的旧应用程序。在尝试解决一个相当简单的更改时,我遇到了一个烦人的问题:

运行时:

NSMutableArray *arr=[[NSMutableArray alloc] initWithCapacity:0];
NSLog(@"arr=%08lx", (unsigned long)arr);
[arr release];

我在控制台中得到这个:

arr=06a2ca50
*** -[__NSArrayM class]: message sent to deallocated instance 0x6a2ca50

单步执行发布声明后立即出现错误。

我不记得在升级到 4.4.1 之前看到过这个,xcode 4.4.1 中有什么新东西可以解释上述内容吗?

或者我只是在上面的代码中监督一些非常明显的东西?

更新:降级到 4.3.3 后问题消失了。目前正在寻找可能导致这种情况的原因。我无法使用新的/干净的项目进行复制。xcode 45-DP4 / iOS6 也有同样的问题。

4

1 回答 1

0

项目文件在调试方案的环境变量中有 NSZombieEnabled=YES。

我不确定为什么在 NSZombieEnabled=YES 的 4.4.1+ 下会出现此警告,因为没有标准分析和诊断工具报告内存问题。

如果有人对为什么会在 4.1.1+ 上出现此警告有更深入的了解,我很想学习。一般来说,我热衷于认真对待编译器或调试警告,并且不认为禁用它们是最佳选择..

于 2012-08-22T12:28:16.780 回答