所以我使用coredata来模拟我的人际关系。
这是简短的模型
类型A可以有一种或多种类型的B
类型B具有与类型A
之一相关联的反比关系B类可以有一种或多种类型的C 类型C具有与类型B之一相关联的反比关系
从UI的角度来看,我有一个带控制器的导航控制器,它连续设置第一个A对象(VC-1),然后另一个视图控制器(VC-2)创建一个B对象(我将A对象传递给它控制器)并将B对象添加到A对象。 同样,B和C也会发生同样的事情。第三个Viewcontroller(VC3)首先创建一个C对象并将其分配给传递的B对象。
在这些viewcontrollers之间也传递了managedObjectCOntext。
所以我的用例是这样的,当viewcontroller(VC-3)是顶级控制器时,按钮操作将继续创建C类型的多个对象,并将它们添加到传递的相同类型B对象中。此外,作为此函数的一部分,我在保存每个类型C后保存managedObject上下文。
e.g。 viewcontroller 3中的代码
- (void) SaveNewTypeC
{
TypeC *newtypeC = (Question*)[NSEntityDescription insertNewObjectForEntityForName:@"TypeC" inManagedObjectContext:managedObjectContext];
[newtypeC setProp1:] ;
[newtypeC setProp2:]
..
..
// setting up the inverse relationship here .
[newtypeC setBTypeObject: typeBObject];
// adding another typeC object to the single typeB object we own here
[typeBObject addTypeCInTypeBObject:newtypeC];
[section setTotalCObjectCount:[ NSNumber numberWithInt:typeCIndex++]];
NSError *error = nil;
if (![managedObjectContext save:&error]) {
// Handle error
NSLog(@"Unresolved error %@, %@, %@", error, [error userInfo],[error localizedDescription]);
abort(); // Fail
}
[newtypeC release];
}
- (IBAction)selectedNewButton:(id)sender {
[self SaveNewTypeC];
[self startRepeatingTimer];
}
BAD ACCESS似乎出现在
之上// setting up the inverse relationship here .
[newtypeC setBTypeObject: typeBObject];
// adding another typeC object to the single typeB object we own here
[typeBObject addTypeCInTypeBObject:newtypeC];
解决这个问题的任何线索都会有所帮助。
答案 0 :(得分:1)
[newtypeC发布];是不良的原因。你为什么要发布newtypeC对象。 您没有使用alloc,new,retain或copy来创建此对象。