【发布时间】:2014-12-29 04:25:25
【问题描述】:
我在主线程上有一个主 NSManagedObjectContext 对象。还有一个私有队列NSManagedObjectContext 可以在不影响主线程的情况下进行快速的NSManagedObject 操作。
初始化这个私有队列NSManagedObjectContext的代码如下:
NSManagedObjectContext *tempContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
tempContext.parentContext = _context;
NSLog(@"LALALA");
[tempContext performBlock:^{
//do some work
NSError *error;
if([tempContext hasChanges]){
[tempContext save:&error];
}
[_appDelegate saveMainContextWithCompletion:^{
// do some work
}];
}];
应用程序在[tempContext save&error] 冻结,我使用 Instrument 来查看发生了什么。它显示没有内存泄漏,但我看到它在内存中无限地 malloc CFString。
谁能告诉我为什么会出现这个错误?
【问题讨论】:
-
你在perform block中做了什么样的工作?
-
@AdeelUrRehman 从
tempContext中获取一些NSManagedObject并为一些属性分配新值,然后保存。顺便说一句,我将它与NSfetchedResultsController和UITableView一起使用。 -
嗨亚瑟。我投了反对票,因为在你问这个问题的同一天有两个答案出现,一个仍然没有回应,也没有被投票。请对付出时间和精力的人做出回应。谢谢!
标签: ios objective-c xcode multithreading core-data