SetContent NSCollectionView: управление памятью - PullRequest
0 голосов
/ 25 сентября 2011

У меня есть NSCollectionView, который я заполняю, используя [collectionView setContent:data];, где data - это NSArray, заполненный объектами одного и того же пользовательского подкласса NSObject. Прототип элемента представления коллекции является стандартным NSCollectionViewItem, без подклассов. Представление элемента коллекции заполняется с помощью привязок из моего подкласса NSObject.

Теперь проблема заключается в том, что при анализе моего приложения с использованием снимков кучи я вижу, что при открытии окна с представлением коллекции наблюдается огромное увеличение памяти. Инструменты определяют это увеличение памяти до линии [collectionView setContent:data];. Эта память никогда не восстанавливается. Есть идеи?

РЕДАКТИРОВАТЬ: я обращаюсь к объекту данных, как это:

NSArray *data = [[[[MWWeatherController sharedInstance] cachedData] objectForKey:[NSString stringWithFormat:@"%u",index]] objectForKey:@"daily"];

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Сделали ли вы ViewController для CollectionView KVO-совместимого?

Имеет ли XIB для CollectionView ArrayController?

Свяжите CollectionView XIB с упорядоченными объектами ArrayController и установитеЭлементы через ваш метод ViewController, например, setMyCustomObjectsArray, который снова устанавливает массив, наблюдаемый ArrayController.

Убедитесь, что вы правильно все освобождаете в методе dealloc вашего пользовательского объекта.

0 голосов
/ 28 сентября 2011

Я думаю, что вы не публикуете данные в своей области ... если вы владеете объектом 'data', убедитесь, что вы его выпускаете.

Какой-то запрос, чтобы ответить на него лучше -

  1. Как вы распределяете «данные»?
  2. Кто его выпускает?
  3. [collectionView setContent: data]; фрагмент кода вокруг этой строки
...