Я создал программу, которая использует основные данные, и она прекрасно работает.
С тех пор я пытался переместить все мои основные вызовы методов данных и извлечь подпрограммы в отдельный класс. Затем моя основная программа создает экземпляр этого класса и выполняет некоторые базовые вызовы методов для этого класса, а затем класс выполняет все основные операции с данными за кулисами. Я сталкиваюсь с тем, что иногда я обнаруживаю, что, когда я беру управляемый объект из контекста, у меня будет действительный объект, но его свойства были освобождены, и я вызову сбой. Я играл с зомби и искал утечки памяти, и я понял, что цикл запуска, вероятно, отвечает за освобождение памяти, но я не уверен.
Есть ли способ определить, была ли освобождена эта память, и принудительно вернуть данные ядра, если мне нужно получить к ней доступ? Мой managedObjectContext никогда не освобождается, и fetchedResultsController также никогда не освобождается.
Я подумал, что, возможно, мне нужно использовать метод [managedObjectContext refreshObject: mergeData:] или метод [managedObjectContext setRetainsRegisteredObjects:]. Хотя у меня сложилось впечатление, что последний вариант может быть не лучшим выбором, так как он потребует больше памяти (насколько я понимаю).
Эти ошибки появлялись, только когда я перемещал вызовы основных данных в другой файл класса, и они случайны, когда они появляются.
Любое понимание будет оценено.
-Ryan