迁移核心数据后,我收到以下异常:
[NSPersistentStoreCoordinator retain]:消息发送到解除分配的实例0x544d550
这只发生在迁移之后,当我点击主页按钮并且应用程序转到后台时。
实例0x544d550是persistenceStoreCoordinator本身。
关于什么是发送消息的任何想法?
谢谢!
答案 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];
你保留一个未分配的对象,这应该是你得到的消息的原因。