0
当我尝试使用NSManagedObject子类时遇到了一个奇怪的问题。我有代码看起来是这样的:保留在NSManagedObject崩溃
[self.navigationController popViewControllerAnimated:NO];
MyController *myController = [[MyController alloc] init];
myController.managedObject = managedObject;
很简单吧?但由于某种原因它会在用于设置“managedObject”的合成函数中崩溃。我试着用一些替代的功能是这样的:
- (void) SetManagedObject:(NSManagedObjectSubClass*) obj
{
if (managedObject)
[managedObject release];
managedObject = obj;
--> [managedObject retain];
}
这崩溃的保留呼叫......我很为难,不知道从哪里开始调试这一点。
我认为你需要更仔细地阅读这个问题。如果你重新阅读这个问题,你会发现我之前使用了合成函数,但是这个函数崩溃了,所以我故意创建了自己的函数(替换合成函数)来查看它崩溃的位置。原来它在保留上崩溃。如果你看看我的功能,我不释放对象,我释放PREVIOUS对象。有很大的不同。 – rhinoinrepose 2011-05-02 08:15:12
你说得对。我误解了这个问题 - 抱歉。另一个想法是,你正在传递一个过度释放的对象obj。您是否已经尝试使用“僵尸”工具运行您的代码? – 2011-05-02 12:21:41
看来我的“obj”obj没有合适的保留和释放次数。可能是因为我直接访问它,而不是使用self.obj。无论如何,现在修复感谢您的答案。 – rhinoinrepose 2011-05-03 17:16:13