我知道NSManagedObjectContext并不是线程安全的,但是我想在后台执行获取和更新操作。所以我对是否可以这样做有疑问。

我有一个单例访问核心数据,所以我想创建一个串行dispatch_queue_t,它可以串行执行所有请求。这样可以吗,原因是我不确定是否所有请求都将在同一线程中执行,但是由于它是串行的,因此不会有任何并发​​操作。

最佳答案

无需创建串行dispatch_queue_t,只需信任NSManagedObjectContext即可处理它,只需使用performBlock:performBlockAndWait:

    [context performBlock:^{
        // do fetches or updates here and do not worry about threads,
        // just make sure your context has a proper concurrencyType
    }];

10-08 05:45