2015-09-17 22 views
1

我讀了這個article在後臺保存核心數據數據庫中的對象。NSMangedObjectContext執行塊在後臺問題

在他們有這樣的代碼將數據保存在後臺的文章的結尾:

[temporaryContext performBlock:^{ 
    // do something that takes some time asynchronously using the temp context 

我明白,如果我們使用performBlock操作將異步完成,但在什麼排隊?我需要把它放在後臺線程這樣的:

dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0), {() -> Void in 
      temporaryContext.performBlock({() -> Void in 

      }) 
     }) 

,或者它足夠使用:

temporaryContext.performBlock({() -> Void in 

       }) 

回答

1

這就夠用了:

temporaryContext.performBlock({() -> Void in 

}) 

您的代碼將被調用在與一個temporaryContext關聯的隊列中。 temporaryContext是一個NSManagedObjectContext,它有自己的專用隊列(NSPrivateQueueConcurrencyType)