Базовые массивы данных через некоторое время пусты - PullRequest
0 голосов
/ 04 ноября 2011

Может быть, я не понимаю что-то об управлении памятью в Core Data. Мне удалось получить массив объектов. Я сохранил этот массив с помощью Retain. После этого я вижу, что этот массив, который я сохранил, пуст. У него есть адрес памяти, но нет объектов (когда я его сохранил, у него были объекты). Может кто-нибудь помочь мне разгадать эту тайну?

Avi

Ответы [ 3 ]

0 голосов
/ 04 ноября 2011

Перед сохранением в массив всегда выделяйте этот массив. И если вы создаете массив внутри блока, он может быть недоступен вне блока. в интерфейсе: NSMutableArray * commonAry;

в реализации: commonAry = [[NSMutableArray alloc] init]; // выделение массива комонов Теперь вы можете добавить извлеченный объект из массива.

0 голосов
/ 02 мая 2012

У меня была точно такая же проблема. Оказалось, что у меня было сохраненное свойство READONLY, и я устанавливал внутренний элемент, а не сохранял его в методе init. Однако я все еще освобождаю его от метода dealloc (как я всегда делаю с сохраненными свойствами). Так что просто проверьте, что ваши записи и релизы всегда совпадают, так как звучит так, как будто их выпускают слишком много.

0 голосов
/ 04 ноября 2011

Есть несколько возможностей.

(1) Вы не храните массив, вы храните изменяемый массив (хотя вы этого не знаете!), А кто-то другой меняет его содержимое.Вместо retain попробуйте copy.

(2). Вы случайно изменили массив, на который указали.Вы можете выяснить это, установив точку останова на строке, в которой хранится ваш массив, и проследите, сколько раз он будет запущен.

Вы обязательно должны сделать (1), даже если это не исправит вашу ошибку.Все, что имеет изменяемый подкласс (то есть NSArray имеет NSMutableArray, NSSet имеет NSMutableSet и т. Д.) Должно быть copy, а не retain

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...