Прежде всего, убедитесь, что вы никогда не сбросили managedObjectModel_
на nil
. Просто найдите в исходном коде «managedObjectModel_ =
», единственный результат должен быть в managedObjectModel
коде, который вы отправили.
Во-вторых, убедитесь, что managedObjectModel_
либо недоступен извне, либо (если вы выставляете managedObjectModel
как свойство) только для чтения.
В-третьих, убедитесь, что есть один и только один экземпляр класса, управляющий стеком основных данных. Если это делегат UIApplication
, инициализированный в кончике главного окна, вам не следует создавать его программно. Если это синглтон, проверьте, действительно ли есть один его экземпляр.
Когда вы абсолютно уверены, что все правильно, пора копать глубже. Вы можете попробовать установить точку наблюдения в GDB на managedObjectModel_
.
Худшее, что может произойти в вашем коде, это операции типа memset
/ memmove
, которые перезаписывают память, занятую вашим менеджером стека базовых данных. Но такого рода ошибки слишком случайны, чтобы всегда попадать по заданному адресу памяти, поэтому я бы на них не рассчитывал.