你能用一个可能已经自动释放的数组初始化一个数组吗?

时间:2011-12-03 14:47:37

标签: objective-c memory-management indexoutofboundsexception

我试图弄清楚我在newArray对象中遇到的越界索引问题。我将oldArray传递给方法,然后使用以下内容:

newArray = [[NSMutableArray alloc] initWithArray:oldArray];

如果oldArray已被释放,我是否会在此行收到错误,或者在尝试访问newArray时是否会出现超出范围的异常?

1 个答案:

答案 0 :(得分:2)

不,上述代码会将oldArray复制到newArray。以任何方式更改oldArray(包括释放它)都不会对newArray产生影响,并且无论如何肯定不会导致边界异常。

最可能的原因是此时oldArraynil,因此newArray是一个空数组,当您不期望它时。或者,oldArray可能没有您认为的那么多元素。界限异常意味着您正在读取数组的末尾。它与内存管理没有任何关系。