Можете ли вы инициализировать массив с массивом, который мог быть выпущено?
-
27-10-2019 - |
Вопрос
Я пытаюсь выяснить проблему индекса безграничного индекса, которую я получаю в своем newArray
объект. Я прохожу oldArray
для метода, а затем используйте следующее:
newArray = [[NSMutableArray alloc] initWithArray:oldArray];
Если oldArray
был выпущен, получу ли я ошибку на этой строке, или я получу исключение вне границ, когда попытаюсь получить доступ newArray
?
Решение
Нет, приведенный выше код создает копию oldArray
в newArray
. Анкет Изменение oldArray
в любом случае (включая его выпуск) не повлияет на newArray
, и в любом случае, безусловно, не вызовет исключение границ.
Наиболее вероятной причиной является то, что oldArray
является nil
На данный момент, так что newArray
это пустой массив, когда вы не ожидаете этого. Попеременно, oldArray
Может быть, не так много элементов, как вы думаете. Исключение границы означает, что вы читаете через конец массива. Это не имеет никакого отношения к управлению памятью.