我有这行代码(splits是一个实例变量):
splits = [[NSMutableArray alloc] initWithObjects:[NSMutableArray array]];
这段代码显然是错误的(它应该以 nil 终止),但是它在模拟器中运行良好,即使它在设备上抛出 EXC_BAD_ACCESS
。我的问题是为什么模拟器不抛出错误?
凯尔
最佳答案
实际结果取决于内存内容。模拟器上的内存布局很可能在第一个参数(匿名数组)的地址后面包含一个零。这个零被解释为就好像您用 nil
关闭参数列表并且一切正常。 (P.S. 对于这种情况,有一个名为 NS_REQUIRES_NIL_TERMINATION
的有趣宏,尽管它显然在这里没有帮助。)
关于iphone - 设备中有错误,但模拟器中没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/881008/