从Core Data列表中删除NSEntityDescription对象

时间:2017-03-22 13:57:48

标签: ios objective-c core-data automatic-ref-counting

我想从核心数据中删除所有NSEntityDescription对象并释放内存。 reset函数对内存没有任何影响

以下是我的代码

-(void)generatePersons: (NSManagedObjectContext *)privatecontext{
    self.persons = [[NSMutableArray alloc]init];

    [privatecontext performBlockAndWait:^{
        for(int i = 1; i< self.dataRows.count; i++){
            NSArray *HeaderRow = [self.dataRows objectAtIndex:1];
            NSArray *dataRow = [self.dataRows objectAtIndex:i];

            if (dataRow.count <=  HeaderRow.count){
                int index = 0;

                Person *person = (Person *)[NSEntityDescription
                                            insertNewObjectForEntityForName:@"Person"
                                            inManagedObjectContext:privatecontext];



                [self.persons addObject:person];


            }
        }

        [privatecontext reset];

    }];
}

这段代码[privatecontext reset];理论上将上下文设置为其基本状态,在我的理解中它也将释放内存,但它并没有并保持相同的内存数

1 个答案:

答案 0 :(得分:0)

尝试在块中使用弱引用。

在块的内联声明之前创建引用:

__weak __block __typeof(&*self)weakself = self;

然后在那里使用weakself代替self。这可能会阻止线程释放其内存。