IOS:尝试添加新的Entity对象时BAD ACCESS

时间:2010-12-25 22:51:18

标签: ios4

所以我使用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];

解决这个问题的任何线索都会有所帮助。

1 个答案:

答案 0 :(得分:1)

[newtypeC发布];是不良的原因。你为什么要发布newtypeC对象。 您没有使用alloc,new,retain或copy来创建此对象。