Ios 更新NSManagedObjectContext时CFString内存泄漏

Ios 更新NSManagedObjectContext时CFString内存泄漏,ios,core-data,ios7,memory-leaks,instruments,Ios,Core Data,Ios7,Memory Leaks,Instruments,每分钟我都会使用核心数据运行一次对sqlite数据库的更新,方法是发出web请求,解析该请求,并更新托管对象上下文中的对象。 从Web服务器返回的JSON数据存储在NSDictionary中: NSDictionary* dictionary = [NSJSONSerialization JSONObjectWithData:operation.data options:kNilOptions error:&error]; 我使用存储为成员的字典初始化NSOperation实例。该操作

每分钟我都会使用核心数据运行一次对sqlite数据库的更新,方法是发出web请求,解析该请求,并更新托管对象上下文中的对象。 从Web服务器返回的JSON数据存储在NSDictionary中:

NSDictionary* dictionary = [NSJSONSerialization JSONObjectWithData:operation.data options:kNilOptions error:&error];
我使用存储为成员的字典初始化NSOperation实例。该操作在字典中循环并更新NSManagedObjectContext,例如:

    for (NSDictionary *item in self.dictionary) {
          NSManagedObject *newItem = [NSEntityDescription insertNewObjectForEntityForName:@"Item" inManagedObjectContext:self.context];
          [newItem setValue:item[@"customerName"] forKey:@"contact_firstname"];
    }
    [self.context save:&error];
查看instruments面板,我发现每次更新都会留下一些未发布的CFString对象:

已发布和未发布的CFstring之间的差异可以通过每个CFstring的refcount跟踪来显示:

发布

未发布:

[NSManagedObject(\u NSInternalMethods)\u newallproperties with relationshipFaultsInAct\uuu]生成的retain(+1)阻止释放此对象。因为每次更新我都会从MSManagedObjectContext中删除所有对象,所以我看不出为什么不应该释放这些cfString


“New AllProperties With Relationship Faults InAction”的目的是什么?为什么它会保留一些我的CFString?

NSManagedObjectContext
将保留对它管理的所有对象所做的所有更改,即使在调用
save:
之后也是如此。这可能是这里的问题,检查在调用
save:
后是否可以调用
reset
reset
将简单地删除自CoreData数据库启动以来对
moc
所做的所有未保存更改

[self.context save:&error];
[self.context reset];

你知道这件事的真相吗?