contacts = [LinkedList getListArray];
контакты это уже инициализирован объект NSMutableArray.
Или это было. Если сообщение прошло (то есть, если класс LinkedList ответил на это сообщение или если вы отправили его в экземпляр LinkedList, вместо этого), это назначение заменит ранее созданный массив и будет сохранено в contacts
с созданным массивом и возвращается getListArray
.
Помните: contacts
переменная не массив. Это контейнер для указателя на объект (массив). Вы говорите, что ранее создали массив и сохранили его указатель в этой переменной; теперь вы пытаетесь получить другой массив и сохраняете его указатель в этой переменной, который заменит любой указатель там раньше.
Как это, единственная причина, по которой вы не заменяете массив contacts
, является причиной того, что Robot K указал: вы отправляете сообщение в класс LinkedList, но только экземпляры LinkedList отвечают на это сообщение.
Есть два пути решения как создание избыточного массива и исключения:
- Переименуйте
getListArray
к getListArray:
, и сделать его принять NSMutableArray в качестве параметра и заполнить в этом массиве.
- Остановить создание пустого массива заранее (вам не нужно) и отправить сообщение
getListArray
экземпляру LinkedList, а не классу LinkedList. Последняя часть - это то, что предложил Робот К.
Я рекомендую решение №2.
Когда люди делают ошибку с избыточным созданием объекта, они часто также просачивают избыточный объект (one example); вы не показали создание предыдущего массива, поэтому я не могу понять, выполнили ли вы это, поэтому на всякий случай, я также предлагаю вам прочитать или перечитать the Memory Management Programming Guide for Cocoa.
Вам явно нужно купить книгу о какао, чтобы сойти с земли. Если «контакты [действительно] - уже инициализированный объект NSMutableArray», вы только что получили утечку памяти или большое недоразумение Objective-C. –