我有一个不使用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相同的问题..
答案 0 :(得分:0)
项目文件在调试方案的环境变量中有NSZombieEnabled = YES。
我不确定为什么在使用NSZombieEnabled = YES的4.4.1+下发生此警告,因为没有一个标准分析和诊断工具报告内存问题。
如果有人对4.1.1+上发生此警告的原因有更深入的了解,我很想学习。一般来说,我热衷于采用编译器或调试警告严重,并且看不到禁用它们作为最佳选择..