xcode 4.4.1+:发送的消息执行解除分配的实例 - 未在4.3.3中发生

时间:2012-08-21 17:03:00

标签: ios xcode

我有一个不使用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

单步执行release语句后会立即出现错误。

由于我不记得在升级到4.4.1之前看到这一点,xcode 4.4.1中有什么新内容可以解释上述内容吗?

或者我只是监督上面代码中非常明显的事情?

降级到4.3.3后,

更新:问题消失了。目前正在寻找可能导致此问题的原因。我无法使用新的/清洁项目进行复制。 与xcode 45-DP4 / iOS6相同的问题..

1 个答案:

答案 0 :(得分:0)

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

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

如果有人对4.1.1+上发生此警告的原因有更深入的了解,我很想学习。一般来说,我热衷于采用编译器或调试警告严重,并且看不到禁用它们作为最佳选择..