迁移后抛出Core Data异常

时间:2011-11-14 08:25:41

标签: objective-c ios core-data migration

迁移核心数据后,我收到以下异常:

[NSPersistentStoreCoordinator retain]:消息发送到解除分配的实例0x544d550

这只发生在迁移之后,当我点击主页按钮并且应用程序转到后台时。

实例0x544d550是persistenceStoreCoordinator本身。

关于什么是发送消息的任何想法?

谢谢!

1 个答案:

答案 0 :(得分:0)

通过调用[NSPersistentStoreCoordinator retain],您正在调用一个对象方法(那些以类-(减号)开头的方法。应该在对象中调用Retain。

首先应创建对象(allocate)然后保留它(如果需要)。

以下是如何使用该类的示例:

NSPersistentStoreCoordinator* persistentStoreCoordinator = 
[[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[NSManagedObjectModel mergedModelFromBundles:nil]];

请注意,以这种方式创建的对象的引用计数已为1(一)。一旦完成它,你需要释放它。除非你使用带有ARC的iOS 5,否则你不应该搞乱引用数量,因为垃圾收集器会为你处理这个问题。

编辑: 我刚刚意识到那是ERROR消息,而不是你的实际代码。

如果您收到的消息是您无法保留未分配的对象,那么您可能会执行以下操作:

NSPersistentStoreCoordinator* persistentStoreCoordinator;
[persistentStoreCoordinator retain];

NSPersistentStoreCoordinator* persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[NSManagedObjectModel mergedModelFromBundles:nil]];
[persistentStoreCoordinator release];
[persistentStoreCoordinator retain];

你保留一个未分配的对象,这应该是你得到的消息的原因。