假设我有一个与主线程绑定(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/