Если я CFRelease () изображение в основных данных, как я могу получить его обратно? - PullRequest
0 голосов
/ 14 июня 2010

Мое приложение для iphone воспроизводит слайд-шоу из 5 пользовательских изображений.Эти изображения хранятся с использованием основных данных.Я заметил, что память накапливалась каждый раз, когда воспроизводилось другое слайд-шоу, и оно не выпускало ни одно из ранее воспроизведенных слайд-шоу.Эти изображения отображаются в распределении объектов как CFData.Поэтому я попытался выпустить эти данные в методе dealloc

CFRelease(slideshow.image1);
CFRelease(slideshow.image2);
CFRelease(slideshow.image3);
CFRelease(slideshow.image4);
CFRelease(slideshow.image5);

. Это великолепно выпускает предыдущее слайд-шоу ... НО, когда я снова возвращаюсь к тому же слайд-шоу, оно вылетает.Я предполагаю, что мне нужно снова распределить / инициализировать эти образы, но я не уверен, как?Или, может быть, я должен управлять этой памятью по-другому?

1 Ответ

2 голосов
/ 14 июня 2010

Звучит так, как будто вы CFRelease - данные, которые не должны быть, и, поскольку вы копаетесь в NSManagedObject, вы неизбежно получите сбой, когда Core Data перейдет к "WTF?"

Под "не выпускалось" вы видите память утечка или простое использование памяти рост ?Если первое, то нам понадобится дополнительная информация, особенно если базовые данные просочились, возможно, вам придется подать отчет об ошибке (что маловероятно).Если последнее, то вы многое можете сделать, поскольку Core Data отвечает за собственное управление памятью.

Возможно, вы могли бы использовать NSAutoreleasePool для оптимизации, но я не могу сказать больше об этом.

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