Можете ли вы инициализировать массив с массивом, который, возможно, был автоматически освобожден? - PullRequest
0 голосов
/ 03 декабря 2011

Я пытаюсь выяснить проблему с индексом из-за границы, который я получаю в моем newArray объекте. Я передаю oldArray методу, а затем использую следующее:

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

Если был выпущен oldArray, получу ли я сообщение об ошибке в этой строке, или я получу исключение вне границ при попытке доступа к newArray?

1 Ответ

2 голосов
/ 03 декабря 2011

Нет, приведенный выше код копирует oldArray в newArray. Любое изменение oldArray (включая его освобождение) не повлияет на newArray и ни в коем случае не приведет к исключению границ.

Наиболее вероятная причина в том, что oldArray равен nil в этой точке, поэтому newArray - это пустой массив, когда вы этого не ожидаете. С другой стороны, oldArray может содержать не так много элементов, как вы думаете. Исключение границ означает, что вы читаете за концом массива. Он не имеет ничего общего с управлением памятью.

...