contacts = [LinkedList getListArray];
contacts - это уже инициализированный объект NSMutableArray.
Или это было. Если сообщение прошло (то есть, если класс LinkedList ответил на это сообщение или если вы вместо этого отправили его экземпляру LinkedList), это назначение заменит массив, который вы ранее создали и сохранили в contacts
, с массивом. создано и возвращено getListArray
.
Помните: переменная contacts
не является массивом. Это контейнер для указателя на объект (массив). Вы говорите, что ранее создали массив и сохранили его указатель в этой переменной; теперь вы пытаетесь получить другой массив и сохранить в этой переменной его указатель , который заменит любой указатель, существовавший ранее.
На самом деле единственная причина, по которой вы не заменяете массив contacts
, - это причина, на которую указал робот K: вы отправляете сообщение классу LinkedList, но на него отвечают только экземпляры LinkedList.
Существует два решения как создания избыточного массива, так и исключения:
- Переименуйте
getListArray
в getListArray:
и заставьте его принять NSMutableArray в качестве параметра и заполните этот массив.
- Прекратите заранее создавать пустой массив (вам не нужно) и отправьте сообщение
getListArray
в экземпляр LinkedList, а не в класс LinkedList. Последняя часть - то, что предложил Робот К.
Я рекомендую решение № 2.
Когда люди совершают избыточную ошибку создания объекта, они часто также пропускают избыточный объект ( один пример ); Вы не показывали создание предыдущего массива, поэтому я не могу видеть, сделали ли вы это, поэтому на всякий случай я также рекомендую вам прочитать или перечитать Программирование управления памятью Руководство по какао .