ios - 如果在上下文的线程上运行,[NSManagedObjectContext PerformBlock] 是否同步?

标签 ios objective-c nsmanagedobject nsmanagedobjectcontext

假设我有一个与主线程绑定(bind)的托管对象上下文,并且我在主线程上调用[mainContext PerformBlock:block]。它会同步运行还是仍然计划并稍后运行?

最佳答案

假设您的意思是 NSMainQueueConcurrencyType (而不是 NSConfinementConcurrencyType),调用 performBlock: 的行为类似于 dispatch_async,即您的 block 将被排队并且不会立即执行。

您可以轻松验证这一点:

NSLog(@"before block");
[self.managedObjectContext performBlock:^{
    NSLog(@"in block");
}];
NSLog(@"after block");

这将打印(按顺序):

before block
after block
in block

如果您需要同步执行 block ,则必须对两种基于队列的并发类型使用performBlockAndWait:

关于ios - 如果在上下文的线程上运行,[NSManagedObjectContext PerformBlock] 是否同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14546776/

相关文章:

ios - AVFoundation 在 iPhone 12 上录制 10 位 HDR 视频

android - Cordova Insomnia 插件不工作

objective-c - NSRect 圆角

swift - 将从 ManagedObjectContext 过滤的对象转换为 NSArray

ios - 如何正确删除 NSManagedObject 关系

ios - UITableView 从 NIB 文件加载自定义单元格抛出 NSInternalInconsistencyException

ios - 使用 API 响应 Swift 填充表

ios - 从另一个类添加 View 作为 presentViewController 导致 UIEvents 不工作

objective-c - NSTreeController:自定义属性键路径的 KVO 失败。

ios - 无法在 iOS 的核心数据中用另一个实体替换一个实体